2009-09-30 71 views
33

我正在编写一个程序来杀死并重新启动浏览器,但我不想硬编码位置,因为有些人在不同的地方安装了窗口(例如,我发现有人安装了它D:\驱动器在C:\驱动器确实存在,但没有安装任何东西)以编程方式在c#中查找windows文件夹#

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

这样做的最佳方式是什么?

+0

您会考虑将接受的答案更改为我所写的答案,它不需要管理员并支持较低版本的.net框架。 – 2017-05-25 19:33:46

回答

9

只是要杀死并重新启动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"); 
} 
+0

并不假设这个程序将在根目录下与资源管理器? – Crash893 2009-09-30 17:20:11

+1

+1:为了更好的实施建议 – Ian 2009-09-30 17:21:05

+1

@ Crash893:不,这不是必需的。只需复制代码并尝试:-) – 2009-09-30 17:24:52

32

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

+1

时,没有任何事情发生您应该在您的响应中指出Environment.SpecialFolder.Windows在.NET版本<4.0上不存在。您在“SpecialFolder”中也有错字。 – 2013-03-18 15:26:21

10

我会强烈建议使用:

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

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

+0

完美。这应该是公认的答案,因为它不需要管理员。 – carefulnow1 2016-06-14 17:21:20

相关问题