C# でのプロセス所有権の決定
プロセスの所有者を取得することは、システム リソースを管理する場合に不可欠なタスクです。このコンテキストでは、プロセスのリストを取得した後でも、「MyApp.exe」という名前のプロセスの所有者を識別する方法を探しています。
Process クラスは基本的なプロセス情報を提供しますが、その機能がありません。所有権を決定するため。この課題に対処するには、Windows Management Instrumentation (WMI) を使用できます。 System.Management.dll への参照を追加すると、プロセスに関連付けられたユーザーを取得できます。
方法 1: プロセス ID による
public string GetProcessOwner(int processId) { string query = "Select * From Win32_Process Where ProcessID = " + processId; ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); ManagementObjectCollection processList = searcher.Get(); foreach (ManagementObject obj in processList) { string[] argList = new string[] { string.Empty, string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { // return DOMAIN\user return argList[1] + "\" + argList[0]; } } return "NO OWNER"; }
方法 2: プロセス名による
public string GetProcessOwner(string processName) { string query = "Select * from Win32_Process Where Name = \"" + processName + "\""; ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); ManagementObjectCollection processList = searcher.Get(); foreach (ManagementObject obj in processList) { string[] argList = new string[] { string.Empty, string.Empty }; int returnVal = Convert.ToInt32(obj.InvokeMethod("GetOwner", argList)); if (returnVal == 0) { // return DOMAIN\user string owner = argList[1] + "\" + argList[0]; return owner; } } return "NO OWNER"; }
これらの WMI ベースの利用によるメソッドを使用すると、プロセス ID または名前を使用してプロセスの所有者を効率的に判断できます。この情報は、システム プロセスを分析し、それに応じてアプリケーションを調整するために非常に貴重です。
以上がID または名前を使用して C# プロセスの所有者を特定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。