tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル APLの多重起動のチェック方法について
投稿日: 2003/07/29(Tue) 16:03
投稿者しんじ
[OSのVer]:Windows2000    [VBのVer]:VS.NET  

お世話になっております。
アプリケーションの重複起動を阻止する為以下のコードを記載したのですが、
エラーが返ってきてしまいます。
悩んだ挙句、何故エラーが返ってくるか理由が分かりません。
環境かな?と思いWin98などのPCにインストールをしてみても試しても変わりません。
どうしようも無く、Mutexを使用したところMutexでは正常に判定できるのですがスッキリしません。
大変お手数ですが、下記のコードが何故エラーになるのかご教授頂けないでしょうか?
また、MutexとProcessのどちらで判定させる方が良いのかも教えて頂ければ大変ありがたいです。

Processクラスを使ってエラーとなるコード:
If UBound(Diagnostics.Process.GetProcessesByName( _
    Diagnostics.Process.GetCurrentProcess.ProcessName)) > 0 Then
    'すでに起動していると判断する
    MsgBox("重複起動はできません。", MsgBoxStyle.Information)
  Exit Sub
End If

返ってくるエラー:
'System.InvalidOperationException' のハンドルされていない例外が system.dll で発生しました。
追加情報 : プロセス パフォーマンス カウンタは無効にされているため、要求された情報を実行でき
ませ
ん。

Mutexのコードを使って正常に判定できるコード:
Dim createdNew As Boolean
Dim m As New System.Threading.Mutex(True, "Name", createdNew)
'--Nameは任意指定

If createdNew = False Then
'ミューテックスの初期所有権が付与されなかったときはすでに起動していると判断する
    MsgBox("重複起動はできません。", MsgBoxStyle.Information)
    '終了するコード
  Exit Sub
End If

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。