- ベストアンサー
vb.net2003での二重起動防止について
度々お世話になっています。 vb.net2003でアプリケーションを作りました。 そこで二重起動防止を行いたい為に、Process.GetProcessesByName メソッドを使用して行いました。 二重起動防止は出来ているのですが、ターミナルサービスでリモートデスクトップ接続を行い、同一ユーザーの二重起動防止はしたいですが、1ユーザーでも使用していたら 別ユーザーで起動できません。 何か良い方法はありませんでしょうか? 出来れば解説しているサイトがあれば教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Mutex クラス と System.Environment.UserNameを利用すれば可能かもしれません。 System.Environment.UserName で現在のスレッドを開始した人のユーザー名を 取得できると思うので、その取得したユーザー名をもとに Mutex クラス を利用した2重起動チェックをもちいると可能かも。 Protected Shared Sub Main() Dim hMutex As New System.Threading.Mutex(False, Application.ProductName & System.Environment.UserName ) If hMutex.WaitOne(0, False) = True Then GC.KeepAlive(hMutex) Application.Run(New Form1) Else Application.Exit() End If hMutex.Close() End Sub 通常の Mutex をもちいた2重起動チェックは、Mutex を生成しする時に Application.ProductName だけを用いますが、それに更にスレッドを開始した人のユーザー名を足した名前で作成すれば、 いいと思う。 Mutex の2重起動チェック方法は方々で利用されているので調べられたらよいと思います。
その他の回答 (1)
- kokorone
- ベストアンサー率38% (417/1093)
1)アクセス情報ファイル(テキストファイルなど)を利用する。 ・アクセス時に、アクセス情報ファイルを読み込み、同一利用者の情報があれば、アプリケーションを終了する。同一利用者の情報がなければ、アクセス情報ファイルに利用者情報を書き込む 2)データベースを利用する ・アクセス時に、データベースに問い合わせ、同一利用者情報があれば、アプリケーションを終了する。同一利用者の情報がなければ、データベースに利用者情報を書き込む いずれの場合も、初回アクセス後の終了処理で、利用者情報を削除 するタイミングに注意が必要。 終了ボタンを押さずに、ウィンドウをクローズしたとか、タスクを 強制終了した場合、利用者情報を削除できない場合もある。
お礼
回答有難う御座いました。 Mutexクラスを使って実現できました。 有難う御座いました。
お礼
回答有難う御座いました。 Mutexクラスを使って実現できました。 有難う御座いました。