2010-12-08 27 views
10

Tôi đang cố gắng để tạo ra một quá trình như vậy:Làm cách nào để đảm bảo quy trình của C#. Khởi động sẽ mở rộng các biến môi trường?

var psi = new ProcessStartInfo 
{ 
    FileName = @"%red_root%\bin\texturepreviewer.exe", 
    UseShellExecute = true 
}; 

var process = Process.Start(psi); 
process.WaitForExit(); 

Bây giờ biến môi trường "red_root" chắc chắn tồn tại trong quá trình sinh ra biến môi trường, nhưng thực hiện dường như không mở rộng các biến môi trường và do đó không tìm thấy tệp. Làm thế nào tôi có thể nhận được Process.Start để mở rộng biến môi trường trong tên tập tin?

Trả lời

20

Phương thức Environment.ExpandEnvironmentVariables sẽ trợ giúp tại đây.

Thay thế tên của từng môi trường biến nhúng trong các quy định chuỗi với chuỗi tương đương với giá trị của biến, sau đó trả về chuỗi kết quả.

string unexpandedPath = "%red_root%\\bin\\texturepreviewer.exe"; 
psi.FileName = Environment.ExpandEnvironmentVariables(unexpandedPath); 
+1

Có vẻ như phương pháp này đã có từ .NET 1.1 nên nó khá an toàn để sử dụng hiện nay. –

6

Bạn đã thử System.Environment.GetEnvironmentVariable ("red_root", EnvironmentVariableTarget.Machine)?