在我的申请中,我定义了以下内容:
public static readonly string NOTEPAD = "%windir%\\notepad.exe";
我可以在Win7机器的Run命令中键入NOTEPAD的文本值,并打开记事本。
但是,从我的Visual Studio C#项目中,Write Line例程每次都会触发:
if (!File.Exists(NOTEPAD)) {
Console.WriteLine("File Not Found: " + NOTEPAD);
}
Visual Studio是否不理解%windir%
?
答案 0 :(得分:4)
而不是像目前为止的其他答案所建议的那样手动扩展变量,您可以让Environment类为您执行此操作,就像Run
命令一样:
if (!File.Exists(Environment.ExpandEnvironmentVariables(NOTEPAD))) {
Console.WriteLine("File Not Found: " + NOTEPAD);
}
请参阅http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx
答案 1 :(得分:2)
在我的Windows XP框上查看时,记事本的位置是:
%SystemRoot%\system32\notepad.exe
不是:
%windir%\notepad.exe
您还需要确保正确解析这些环境变量 - 使用Environment.GetEnvironmentVariable
和Path.Combine
构建正确的路径:
string root = Environment.GetEnvironmentVariable("SystemRoot");
string path = Path.Combine(root, "system32", "notepad.exe");
答案 2 :(得分:1)
仔细看看班级环境。环境变量是SystemRoot,因此您可以使用 Environment.GetEnvironmentVariable(“windir”)(或类似的东西)
http://msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx
控制台将%windir%环境变量“解析”为正确的路径。您需要使用上述功能在您的应用程序中执行相同的操作。
答案 3 :(得分:1)
使用Environment.GetEnvironmentVariable("windir")
;
所以你可以这样声明:
public static readonly string NOTEPAD = Environment.GetEnvironmentVariable("windir") + "\\notepad.exe";