6

Windows 7マシンのセットアッププロジェクトインストールの一部として、「。rulog」を作成したファイル拡張子をnotepad.exeに関連付ける必要があります(レジストリへの書き込みには管理者権限が必要なため、ここにあります)。

基本的に、notepad.exeの正確なパスをプログラムで取得する必要があります。今、私はそれが通常C:\ Windows\system32にあることを理解しています。これはPATHシステム環境変数の一部であるため、すべてのPATH変数をループして、File.Existsを使用して「notepad.exe」を現在のパスと組み合わせることで「notepad.exe」が存在するかどうかをテストできると思います。しかし、これは非常に不器用に感じます。

基本的に、エントリを追加する必要があります

Computer\HKEY_CLASSES_ROOT\.rulog\shell\open\command\ 

メモ帳のパスの値を使用します。

ちなみに私はその.txtを次の場所で見ることができます:

Computer\HKEY_CLASSES_ROOT\.txt\ShellNew

ItemNameの値は

“@%SystemRoot%\system32\notepad.exe,-470”

おそらく私はこの値をコピーすることができますか?それともこれは危険ですか?(たとえば、存在しません)。

4

3 に答える 3

9

次を使用できます。

Environment.GetEnvironmentVariable("windir") + "\\system32\\notepad.exe";

またはさらに簡単:

Environment.SystemDirectory + "\\notepad.exe";

そうすれば、OSがオンになっているドライブは関係ありません。

于 2012-01-12T17:08:08.657 に答える
3

%systemroot%を使用して値をコピーすることは問題ありません。OSで動作する場合は、動作するはずです。

于 2012-01-12T17:07:46.677 に答える
0

絶対確実なソリューション:

string NotepadPath = Environment.SystemDirectory + "\\notepad.exe";
if (System.IO.File.Exists(NotepadPath))
{
    Microsoft.Win32.Registry.SetValue("HKEY_CLASSES_ROOT\\.rulog\\shell\\open\\command\\", "", NotepadPath + " %1");
}
else
{
    //do something else or throw new ApplicationException("Notepad not found!");
}
于 2012-01-12T18:15:54.103 に答える