C# の Process
クラスは、プロセスの所有権を直接明らかにしません。 ただし、Windows Management Instrumentation (WMI) を活用して、この重要な詳細を取得できます。 プロジェクトに System.Management.dll
への参照を忘れずに追加してください。
このメソッドは、指定された ID のプロセス所有者を取得します。
<code class="language-csharp">public string GetProcessOwner(int processId) { string query = $"Select * From Win32_Process Where ProcessID = {processId}"; using (var searcher = new ManagementObjectSearcher(query)) { using (var processList = searcher.Get()) { foreach (ManagementObject obj in processList) { string[] ownerInfo = new string[2]; int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo)); if (result == 0) { return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
この代替案では、プロセス名を使用して所有者を見つけます:
<code class="language-csharp">public string GetProcessOwner(string processName) { string query = $"Select * from Win32_Process Where Name = '{processName}'"; using (var searcher = new ManagementObjectSearcher(query)) { using (var processList = searcher.Get()) { foreach (ManagementObject obj in processList) { string[] ownerInfo = new string[2]; int result = Convert.ToInt32(obj.InvokeMethod("GetOwner", ownerInfo)); if (result == 0) { return $"{ownerInfo[1]}\{ownerInfo[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
これらの関数は、プロセスの所有権を決定するための堅牢な方法を提供し、システム管理とセキュリティ分析に貴重な洞察を提供します。 using
ステートメントを使用すると、リソースが適切に破棄されます。
以上がWMI を使用して C# でプロセスの所有者を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。