- 締切済み
重複起動の抑止
お世話になっています。 Visual Basic.Netにて開発を行っております。 アプリケーションの重複起動を抑止するため、下記のようなコードを作成しました。 '自アプリプロセス名取得 Dim strProcName As String = System.Diagnostics.Process.GetCurrentProcess.ProcessName 'プロセスコンポーネントにリソースを関連付け procName = System.Diagnostics.Process.GetProcessesByName(strProcName) If UBound(procName) > 0 Then '重複起動 End If 上記コードにて重複起動チェックが行えていたのですが、 急に自アプリのプロセス名の取得時にエラーが発生するようになってしまいました。 (1行目で文字列を直接渡した場合、2行目で同様のエラーが発生します) エラーが発生する直前に行っていたことからエラー要因の確定ができると思うのですが、 今回は、まったく思い当たる節がございません。 エラー内容を見るとマシンの設定が変更されてしまっているようにも見えるのですが、 どこの設定値を変更すればよいのかご存知の方、または 他の重複起動チェックをご存知の方がいらっしゃいましたら、 申し訳ないのですがご教授頂けないでしょうか? Message "プロセス パフォーマンス カウンタは無効にされているため、要求された情報を実行できません。" StackTrace at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib library) at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Boolean isRemoteMachine) at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName) at System.Diagnostics.Process.EnsureState(State state) at System.Diagnostics.Process.get_ProcessName() at Sample.Sample.Main() in *** Windows 2000 Pro SP3
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- NIRAREBA2
- ベストアンサー率0% (0/0)
申し訳ありません。 2行目は Dim procName() As Process = System.Diagnostics.Process.GetProcessesByName(strProcName) の間違えです。 大変、失礼を致しました。
補足
自己レス レジストリの下記キーを変更することでエラーが発生しなくなりました。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance Disable Performance Counters = 0 また、重複起動のチェック方法にMutexクラスを使用する方法もあります。 (私はこちらにのりかえました)