質問

equipctrl.exeというC#で書かれたアプリケーションがあるとしましょう。

明らかに、各PCで実行するためにEquipCTRLのインスタンスが1つしかないことを望みます。 PCごとに2つの装備を制御する場合、PCごとに2つのインスタンスに制限します。

私がした方法は、1のいずれかでした。プロセス名。プロセスeqctrlに名前を付け、プロセスの起動時に、「eqctrl」という名前で数プロセスをカウントします。 2.実行名。起動時には、実行名equimcttrl.exeを使用したプロセスの数をカウントします。 3.レジストリレコード。 4. SQL Serverデータベースレコード。

私にとって、名前または実行の名前を処理することは、最も単純で、私が最も(すべてではないにしても)最も単純なことです。しかし、彼らは衝突するのに影響を受けやすいです。実行パスをさらに見つけても、実行ファイルを別のフォルダーにコピーすることで制限を回避できます。

.NETで実行制限を実行するための最良の方法は何ですか?なんで?レジストリレコードは最良の方法ですか?

役に立ちましたか?

解決

システム全体のセマフォを試してください:http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx

他のヒント

スコット・ハンセルマンのブログには、これに関する素晴らしい投稿があります...

http://www.hanselman.com/blog/theweeklysourcecode31singleinstancewinformsandmicrosoftvisualbasicdll.aspx

うーん..アプリケーションの単一インスタンスのみを許可する場合は、 名前付きMutex

それはあなたが望むシナリオを正確に有効にするわけではありません。

別のポイントは、実行可能ファイルのMD5ハッシュを使用して、実行可能ファイルのMD5ハッシュを使用します。

これは、Mutex Semaphoreという名前のカウントでこれを行うことができます。また、作成したMutex/Semaphoreのプレフィックスが、グローバルおよびLocal Remote Desktop Connectがこれらの名前のMutexを読み取らず、カウントが失われることを確認してください。

http://msdn.microsoft.com/en-us/library/ms682411(vs.85).aspx

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top