环境 - C#,.NET 4.0,VS 2010
您好,我写了一个简单的外壳更换为Windows。 当用户登录。正常的Windows“explorer.exe的”启动,当用户退出我的壳壳会自动启动。
现在,当用户退出(并适当支持这个)我需要能够检查是否“explorer.exe的”正在运行当前登录的用户。 这可以防止代码无需重新启动它,这会导致“Windows资源管理器”应用程序窗口。
我已经看到了如何检查,看看如果一个进程正在运行...但没有看它是否正在运行当前登录用户的例子不胜枚举。
下面的代码会检查,看看是否“explorer.exe的”正在运行,如果它是不是会启动它。 但也有在这段代码测试阳性时,它并不需要的情况下!
例如,使用快速用户切换时...另一个用户登录到计算机,并且作为结果,“explorer.exe的”表示在进程列表。 但是,“Explorer.exe的”正在运行时,它不运行当前登录的用户! 所以,当我的外壳退出,代码测试呈阳性反应,而“Explorer.exe的”未启动。 用户留下了一个黑色的屏幕和外壳没有!
所以,我怎么能国防部下面的代码来测试“的explorer.exe”运行当前登录的用户?
Process[] Processes = Process.GetProcessesByName("explorer");
if (Processes.Length == 0)
{
string ExplorerShell = string.Format("{0}\\{1}", Environment.GetEnvironmentVariable("WINDIR"), "explorer.exe");
System.Diagnostics.Process prcExplorerShell = new System.Diagnostics.Process();
prcExplorerShell.StartInfo.FileName = ExplorerShell;
prcExplorerShell.StartInfo.UseShellExecute = true;
prcExplorerShell.Start();
}