-1

アプリケーションにライセンスを実装しています。

ユーザーが Windows ターミナル サーバーで同じログオンを複数回使用するのを防ぐにはどうすればよいですか。

Windows ターミナル サーバーで特定のパラメーターを Win32_Process に渡す方法はありますか?

存在する場合は、そこから読み取ることができ、2 番目のログオンを許可しません。

または、中央の Windows サービスのようなものが必要であり、実行前に認証を受ける必要があります。

助言がありますか?

4

2 に答える 2

1

これを行う最善の方法は、グローバルMutexを使用することです。

bool owned;
using (var mutex = new Mutex(true, @"Global\SingleUserNameLogon-" + CurrentUserName, out owned))
{
    if (!owned)
    {
        MessageBox.Show("This program can only be run by one person at a time!");
        closeTheForm();
    }

    //Put the rest of your program here
}

これにより、という名前のミューテックスが作成されます。Global\SingleUserNameLogon-Bhoomiプログラムが、その正確な名前のミューテックスを既に作成している別のプログラムを検出した場合、closeTheForm()関数を呼び出します。

ミューテックスの名前にプレフィックスを付けることGlobal\で、アプリが実行されているセッションだけでなく、コンピューター上のすべてのセッションで同じ名前のミューテックスがチェックされます。

注意すべきことの 1 つは、ミューテックスが破棄されると別のプログラムを実行できるため、ミューテックスをusingステートメントに配置する必要はなく、コンストラクターで作成して閉じるときに破棄するフォームのローカル変数として保持する必要がある場合があることです。

于 2015-01-27T20:56:14.457 に答える