4

私のアプリケーションでは、次のように定義しました。

public static readonly string NOTEPAD = "%windir%\\notepad.exe";

Win7マシンの[ファイル名を指定して実行]コマンドにメモ帳のテキスト値を入力すると、メモ帳が開きます。

ただし、Visual Studio C#プロジェクト内からは、WriteLineルーチンが毎回起動します。

  if (!File.Exists(NOTEPAD)) {
    Console.WriteLine("File Not Found: " + NOTEPAD);
  }

Visual Studioは理解しません%windir%か?

4

4 に答える 4

4

Runこれまでの他の回答で示唆されているように変数を手動で展開する代わりに、コマンドと同じように Environment クラスにこれを実行させることができます。

if (!File.Exists(Environment.ExpandEnvironmentVariables(NOTEPAD))) {
  Console.WriteLine("File Not Found: " + NOTEPAD);
}

http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspxを参照してください。

于 2010-06-25T19:20:01.570 に答える
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");
于 2010-06-25T19:08:30.790 に答える
1

クラス環境を詳しく見てください。環境変数はSystemRootであるため、Environment.GetEnvironmentVariable( "windir")(またはそのようなもの)を使用できます。

http://msdn.microsoft.com/en-us/library/system.environment.getenvironmentvariable.aspx

コンソールは、%windir%環境変数を正しいパスに「解決」します。アプリケーション内で同じことを行うには、上記の関数を使用する必要があります。

于 2010-06-25T19:08:21.650 に答える
1

使用Environment.GetEnvironmentVariable("windir");

したがって、次のように宣言できます。

public static readonly string NOTEPAD = Environment.GetEnvironmentVariable("windir") + "\\notepad.exe";
于 2010-06-25T19:09:04.097 に答える