プロセスの所有者を教えてくれるコードを見つけました。私の問題は、アプリケーションに管理者権限がある場合にのみ機能することです。昇格されていないプロセスと同じことを行う方法はありますか? 現在、InvokeMethod 呼び出しから「アクセスが拒否されました」というエラーが表示されます。
string query = "Select * from Win32_Process Where Name = \"" + sExeName + "\"";
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;
processUser = argList[1] + "\\" + argList[0];
if (processUser == currentUser)
continue;
else
break;
}
}