ホームページ > バックエンド開発 > C++ > 32 ビット アプリケーションは Windows の 64 ビット レジストリにどのようにアクセスできますか?

32 ビット アプリケーションは Windows の 64 ビット レジストリにどのようにアクセスできますか?

Mary-Kate Olsen
リリース: 2025-01-16 19:05:10
オリジナル
307 人が閲覧しました

How Can a 32-bit Application Access the 64-bit Registry in Windows?

32 ビット Windows アプリケーションから 64 ビット レジストリへのアクセス

チャレンジ:

32 ビット アプリケーションは、64 ビット Windows システム上の 64 ビット レジストリにアクセスするのが困難になります。この問題は、64 ビットのビルド サーバー上で実行されている 32 ビットの単体テストから、SQL Express インスタンスへのパスなど、64 ビットのレジストリに存在するシステム情報にアクセスするときによく発生します。

解決策:

64 ビット レジストリへのアクセス:

RegistryView.Registry64 プロパティは、32 ビット アプリケーションから 64 ビット レジストリにアクセスするためのソリューションを提供します。 次のコードはこれを示しています:

<code class="language-csharp">RegistryKey localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey sqlServerKey = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
string sqlExpressKeyName = (string)sqlServerKey.GetValue("SQLEXPRESS");</code>
ログイン後にコピー

32 ビット レジストリへのアクセス:

逆に、32 ビット レジストリにアクセスするには、RegistryView.Registry32:

を使用します。
<code class="language-csharp">RegistryKey localKey32 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey sqlServerKey32 = localKey32.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL");
string sqlExpressKeyName = (string)sqlServerKey32.GetValue("SQLEXPRESS");</code>
ログイン後にコピー

重要な考慮事項:

  • 32 ビット レジストリには 64 ビット レジストリ内の「Wow6432Node」経由でアクセスできますが、RegistryView.Registry32 を使用することが推奨される、より直接的なアプローチです。
  • Windows 7 (64 ビット) の既知のバグにより、32 ビット コードからアクセスすると RegisteredOrganization 値が誤って「Microsoft」を返す可能性があります。 64 ビット コードは正しい構成を返します。
  • GetAllRegValueNames() 関数を使用すると、レジストリ ビュー (32 ビットまたは 64 ビット) に関係なく、すべてのキーの名前と値を取得できます。
  • null 合体演算子 (??) を利用して、潜在的な null 値を適切に処理します。

以上が32 ビット アプリケーションは Windows の 64 ビット レジストリにどのようにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート