WMI を使用して C# アプリケーションのプロセス所有者を識別する
プロセスの所有権を効率的に決定することは、さまざまな C# アプリケーション、特にシステム リソースの管理とセキュリティに重点を置いたアプリケーションにとって重要です。このガイドでは、Windows Management Instrumentation (WMI) ライブラリを使用してこれを実現する方法を説明します。
プロセスの所有権に WMI を活用する
WMI は、プロセスを含むシステム コンポーネントを管理および監視するための強力なツールを提供します。 WMI を利用してプロセス所有者を特定する方法は次のとおりです:
1. System.Management.dll 参照の追加
Visual Studio で、ソリューション エクスプローラー でプロジェクトの 参照 に移動します。右クリックして 参照の追加... を選択し、参照して System.Management.dll を追加します。
2. プロセス ID
を使用してプロセス所有者を取得する次のコード スニペットは、指定されたプロセス 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[] argList = { string.Empty, string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
3. プロセス名
によるプロセス所有者の取得このメソッドはプロセス名を使用して所有者を識別します:
<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[] argList = { string.Empty, string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { return $"{argList[1]}\{argList[0]}"; // DOMAIN\user format } } } } return "NO OWNER"; }</code>
これらの関数は、プロセス所有権情報を取得する簡単な方法を提供し、C# アプリケーションのプロセス管理機能を強化します。 適切なリソース管理のために using
ステートメントを使用することに注意してください。
以上がWMI を使用して C# でプロセスの所有権を確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。