VS2008中的记事本路径

时间:2010-06-25 19:05:12

标签: c# notepad

在我的申请中,我定义了以下内容:

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%

4 个答案:

答案 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.GetEnvironmentVariablePath.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";