我正在编写一个程序来终止和重新启动资源管理器,但我不想硬编码资源管理器的位置,因为一些人在不同的位置安装了Windows(例如,我找到有人将其安装在D:\驱动器上,在C:\驱动器上没有安装任何东西)
我尝试查看Environment.SpecialFolder下的选项,但我没有看到"windows"选项
最好的方法是什么?
我正在编写一个程序来终止和重新启动资源管理器,但我不想硬编码资源管理器的位置,因为一些人在不同的位置安装了Windows(例如,我找到有人将其安装在D:\驱动器上,在C:\驱动器上没有安装任何东西)
我尝试查看Environment.SpecialFolder下的选项,但我没有看到"windows"选项
最好的方法是什么?
http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx
试试这些方法:
Environment.GetEnvironmentVariable("SystemRoot")
Environment.GetEnvironmentVariable("windir")
Environment.GetFolderPath(Environment.SpecialFolder.Windows)
将返回Windows文件夹的路径。建议使用此方法而不是环境变量,因为它使用了一个可以精确满足我们需求的API(.NET 4.0及以上版本)。
我强烈推荐使用:
Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))
它不需要管理员权限,并支持所有版本的.NET框架。
如果只是简单地杀死和重启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");
}
echo %PATH%
,然后你会看到C:\Windows被打印在以';'分隔的目录列表中。当你在shell上执行命令时,所有在你的路径变量中的文件夹都会被搜索。当你执行 Process.Start("explorer.exe");
时不会发生其他任何事情。 - Dirk Vollmar