私の解決策は、どのユーザーがエクスプローラープロセスを開始したかを見つけることでした。
System.Management
.NETライブラリを参照する場合にのみ機能します。
private static string GetExplorerUser()
{
var process = Process.GetProcessesByName("explorer");
return process.Length > 0
? GetUsernameByPid(process[0].Id)
: "Unknown-User";
}
private static string GetUsernameByPid(int pid)
{
var query = new ObjectQuery("SELECT * from Win32_Process "
+ " WHERE ProcessID = '" + pid + "'");
var searcher = new ManagementObjectSearcher(query);
if (searcher.Get().Count == 0)
return "Unknown-User";
foreach (ManagementObject obj in searcher.Get())
{
var owner = new String[2];
obj.InvokeMethod("GetOwner", owner);
return owner[0] ?? "Unknown-User";
}
return "Unknown-User";
}
もう1つの可能性は、qwinsta
コマンドの出力を解析することです。