2009-09-30 43 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

相關問題