43

我正在编写一个程序来杀死并重新启动资源管理器,但我不想硬编码该位置,因为有些人将 Windows 安装在不同的地方(例如,我发现有人将它安装在 d:\ 驱动器中 C:\驱动器确实存在,但没有安装任何东西)

我尝试在 Environment.SpecialFolder 下查找。但我没有看到下面的“windows”选项

做这个的最好方式是什么?

4

4 回答 4

72

http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx

试试这些:

Environment.GetEnvironmentVariable("SystemRoot")

Environment.GetEnvironmentVariable("windir")
于 2009-09-30T16:50:55.677 回答
57

Environment.GetFolderPath( Environment.SpecialFolder.Windows )将返回 Windows 文件夹的路径。在环境变量上推荐这种方法,因为使用的 API 完全符合我们的要求(.NET 4.0 及更高版本)。

于 2013-03-11T13:34:11.803 回答
26

我强烈建议使用:

Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))

它不需要管理员权限并支持所有版本的 .NET 框架。

于 2016-03-01T19:07:04.677 回答
10

要简单地杀死并重新启动 Windows 资源管理器,您不需要系统文件夹的路径,因为它已经包含在 PATH 环境变量中(除非用户弄乱了它)。

该短程序将杀死所有 explorer.exe 实例,然后重新启动 explorer.exe:

static void Main(string[] args)
{
    foreach (Process process in Process.GetProcessesByName("explorer"))
    {
        if (!process.HasExited)
        {
            process.Kill();
        }
    }
    Process.Start("explorer.exe");
}
于 2009-09-30T17:13:20.663 回答