【解決方法】system.diagnostics.process.getprocesses() でアクセスが拒否されました

プログラミングQA


すべてのプロセスマシンと各プロセスに費やした時間をカウントするコードを作成しようとしています。

以下のコードのデバッグを開始すると、processStartTime を取得しようとすると例外がスローされます。

メッセージは「アクセスが拒否されました」です。

p.StartTime 'p.StartTime' threw an exception of type 'System.ComponentModel.Win32Exception'

   em System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
   em System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)
   em System.Diagnostics.Process.GetProcessTimes()
   em System.Diagnostics.Process.get_StartTime()

誰でも私を助けることができますか?

よろしく

C#
var list = System.Diagnostics.Process.GetProcesses();
           foreach (var p in list)
           {
               System.Diagnostics.PerformanceCounter pc = new System.Diagnostics.PerformanceCounter();

               string processStartTime = string.Empty;
               if (p.StartTime != null)
                   processStartTime = p.StartTime.ToString();
               listbox1.Items.Add(p.ProcessName + " MainWindowHandle: " + p.MainWindowTitle + " process start time: " + processStartTime);
           }

解決策 1

1.プロセス情報にアクセスするには、管理者権限が必要です。

2.解決策は、アプリケーションを「管理者として」実行することです。

解決策 2

アプリケーション マニフェストを次の行に置き換えます

コメント

タイトルとURLをコピーしました