32 ビット .NET アプリケーションから 64 ビット レジストリ エントリへのアクセス
64 ビット Windows システム上で実行されている 32 ビット アプリケーションから 64 ビット レジストリにアクセスするには、特定のアプローチが必要です。 幸いなことに、.NET Framework 4.x 以降のバージョンでは、これに対する組み込みサポートが提供されています。
64 ビット レジストリ アクセスに RegistryView を活用する
RegistryView
列挙は、32 ビットと 64 ビットのレジストリ アクセスを区別するための鍵となります。 使用方法は次のとおりです:
<code class="language-csharp">// Access the 64-bit registry using Microsoft.Win32; RegistryKey localKey64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); RegistryKey sqlServerKey64 = localKey64.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"); // Access the 32-bit registry RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32); RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");</code>
特定のレジストリ値の取得
「Instance NamesSQL」キーの「SQLEXPRESS」などの特定の値を取得するには、次を使用します。
<code class="language-csharp">string sqlExpressKeyName = (string)sqlServerKey64.GetValue("SQLEXPRESS");</code>
包括的なキーの取得: 32 ビットと 64 ビットの結果を組み合わせる
32 ビットと 64 ビットの両方のレジストリの場所からのデータが必要な場合は、クエリを組み合わせた方が有益です。
<code class="language-csharp">using System.Linq; IEnumerable<string> GetAllRegValueNames(string regPath) { var reg64 = GetRegValueNames(RegistryView.Registry64, regPath); var reg32 = GetRegValueNames(RegistryView.Registry32, regPath); var result = (reg64 != null && reg32 != null) ? reg64.Union(reg32) : (reg64 ?? reg32); return (result ?? new List<string>().AsEnumerable()).OrderBy(x => x); }</code>
GetRegValueNames
は、指定されたキーの下にある値の名前を取得するヘルパー関数 (図示されていませんが、簡単に実装できます) です。 regPath
はレジストリ パスを指定します。
使用例:
<code class="language-csharp"> var sqlRegPath = @"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"; foreach (var keyName in GetAllRegValueNames(sqlRegPath)) { Console.WriteLine(keyName); } ``` This iterates through all found keys, regardless of whether they reside in the 32-bit or 64-bit registry hive.</code>
以上が32 ビット .NET アプリケーションから 64 ビット レジストリ キーにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。