2009-09-30 44 views
33

Tôi đang viết chương trình để diệt và khởi động lại trình khám phá nhưng tôi không muốn mã cứng vị trí vì một số người cài đặt cửa sổ ở những nơi khác nhau (ví dụ: tôi tìm thấy ai đó đã cài đặt nó trong d: \ drive nơi ổ C: \ đã tồn tại nhưng không có gì được cài đặt trên nó)Tìm thư mục windows lập trình trong C#

Tôi đã thử tìm trong Environment.SpecialFolder. nhưng tôi không thấy tùy chọn "cửa sổ" trong đó

Cách tốt nhất để làm điều này là gì?

+0

bạn sẽ xem xét thay đổi câu trả lời được chấp nhận cho câu trả lời tôi đã viết, nó không yêu cầu quản trị viên và hỗ trợ các phiên bản thấp hơn của khung .net. –

Trả lời

9

Để đơn giản giết và khởi động lại Windows Explorer bạn sẽ không cần đường dẫn đến thư mục hệ thống như thế này đã được bao gồm trong biến môi trường PATH (trừ trường hợp người dùng đã nhầm lẫn với nó).

Đó chương trình ngắn sẽ giết chết tất cả các trường explorer.exe và sau đó khởi động lại explorer.exe:

static void Main(string[] args) 
{ 
    foreach (Process process in Process.GetProcessesByName("explorer")) 
    { 
     if (!process.HasExited) 
     { 
      process.Kill(); 
     } 
    } 
    Process.Start("explorer.exe"); 
} 
+0

không phải là giả định rằng chương trình này sẽ được trong thư mục gốc với thám hiểm? – Crash893

+1

+1: Để có đề xuất triển khai tốt hơn – Ian

+1

@ Crash893: Không, điều đó không cần thiết. Đơn giản chỉ cần sao chép mã và thử :-) –

32

Environment.GetFolderPath(Environment.SpecialFolder.Windows) sẽ trở lại đường dẫn đến thư mục Windows. Đề xuất phương pháp này qua biến môi trường, bởi vì sử dụng API thực hiện chính xác những gì chúng ta muốn (.NET 4.0 trở lên).

+1

Bạn nên chỉ ra câu trả lời của bạn rằng Environment.SpecialFolder.Windows không tồn tại trên các phiên bản .NET <4.0. Bạn cũng có lỗi đánh máy trong "SpecialFolder". –

10

Tôi rất muốn giới khuyến cáo sử dụng:

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

Nó không đòi hỏi quyền quản trị và hỗ trợ tất cả các phiên bản của .NET framework.

+0

Hoàn hảo. Đây phải là câu trả lời được chấp nhận vì nó không yêu cầu quản trị viên. – carefulnow1

Các vấn đề liên quan