Programming Windows Maniacs - プログラミング ウィンドウズ マニアックス ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて  
ホーム >> システム >> SQL Serverがすでにインストールされているか確認するには?

SQL Serverがすでにインストールされているか確認するには?(インスタンスID)

  レジストリでSQL ServerのインスタンスIDを取得することにより、PCにSQL Serverがインストールされているかを確認することができます。

  SQL ServerのインスタンスIDは、下記レジストリに記載されます。

ルートキー HKEY_LOCAL_MACHINE
キー SOFTWARE\\Microsoft\\Microsoft SQL Server
値の名前 InstalledInstances
値の形式 REG_MULTI_SZ

  ※ REG_MULTI_SZは'\0'区切りで文字列があり、終端は'\0'が2つになります。

  以下はサンプルプログラムです。

■■■ sqlinstalled プロジェクト
■ main.cpp

#include <windows.h>

// すでに SQL Server がインストールされているか?(SQL ServerのインスタンスIDがレジストリに存在するかで判断)
BOOL IsInstalledSQLServer ()
{
    BOOL bResult = FALSE;
    // レジストリのサブキーを開く
    HKEY hKey;
    const char cszSubKey[] = "SOFTWARE\\Microsoft\\Microsoft SQL Server";
    if ( ERROR_SUCCESS == RegOpenKeyEx ( HKEY_LOCAL_MACHINE, cszSubKey, 0, KEY_READ, &hKey ) )
    {
        // レジストリの値のサイズを取得
        DWORD dwSize;
        DWORD dwType = REG_MULTI_SZ;
        const char cszValueName[] = "InstalledInstances";
        if ( ERROR_SUCCESS == RegQueryValueEx ( hKey, cszValueName, NULL, &dwType, NULL, &dwSize ) )
        {
            // サイズ分メモリを確保
            BYTE *pacValue = new BYTE[ dwSize ];

            // 読み込み(中身の確認はしないが読み込めた場合何かしらのバージョンのSQL Serverがインストール済み
            if ( ERROR_SUCCESS == RegQueryValueEx ( hKey, cszValueName, NULL, &dwType, pacValue, &dwSize ) )
            {
                // SQL Server のインスタンスIDが存在するので、SQL Serverはインストールされていると判断
                bResult = TRUE;
            }

            // メモリを解放
            delete[] pacValue;
        }

        // サブキーを閉じる
        RegCloseKey ( hKey );
    }

    return bResult;
}


int WINAPI WinMain ( HINSTANCE hThisInstance,
    HINSTANCE,
    char *,
    int )
{
    // SQL Server がすでにインストールされているか確認
    if ( IsInstalledSQLServer () )
    {
        MessageBox ( NULL, "SQL Serverはインストールされています。", "確認", MB_SYSTEMMODAL | MB_OK );
    }
    else
    {
        MessageBox ( NULL, "SQL Serverはインストールされていません。", "確認", MB_SYSTEMMODAL | MB_OK );
    }

    return 0;
}
  ■ ご利用に際して ■ 更新履歴 ■ お問い合わせ ■ このホームページについて Copyright © 2014 A.Morita