3

InstallScriptで、32ビットおよび64ビットインストールのレジストリキーのリストを取得する際に問題が発生しました。

私のマシンはWindowsServer200864ビットです。このマシンにSQLServer200832ビットバージョンまたは64ビットバージョンをインストールできます。

セットアップ中に、SQLServerのいずれかのバージョンがインストールされているかどうかを知る必要があります。

私の理解によると、

  • 64ビットマシン上の64ビットアプリケーションは、に格納されSoftware\\Microsoft\\Windows\\CurrentVersion\\Uninstallます。
  • 64ビットマシン上の32ビットアプリケーションはに格納されSoftware\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstallます。

この関数を使用して、SQLServerのインストールについてこれらの両方の場所を検索する関数を作成しましたRegDBQueryKey

に渡し"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall"てもRegDBQueryKey、のキーが一覧表示されますSoftware\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall

誰かがこの問題で私を助けることができますか?

4

1 に答える 1

3

RegDBQueryKeyを呼び出す前に、次のフラグを設定します。

REGDB_OPTIONS = REGDB_OPTION_WOW64_64KEY;

これにより、64ビットバージョンのキーへのデフォルトの転送が無効になり、32ビットバージョンが提供されます。これはグローバルに適用されるため、完了したら、次を使用してフラグをリセットしてください。

REGDB_OPTIONS = REGDB_OPTION_USE_DEFAULT_OPTIONS;
于 2012-07-18T19:10:44.963 に答える