2012-01-02 7 views
0

MSSQLSERVERをインストールする前に、MSSQLSERVERが既にシステムにインストールされているかどうかを確認したいと思います。これはC++またはmfcでプログラム的に行う必要があります。MSSql ServerがWindows XPまたは7にインストールされているかどうかを知るには?

MSSQLServerが既にWindowsにインストールされている場合、そのサーバーのMSSQL証明書を取得する方法はありますか?

もしそうなら、これを達成する方法を説明してください。

UPDATE

私は私のシステムでのSQLServer 2005およびSQL Server 2008をインストールしようとしたが、両方のサーバがインストールされています。レジストリパスを確認しましたが、MSSQLServer 2005の場合はSOFTWARE\Microsoft\Microsoft SQL Server\90MSSqlServer 2008の場合はSOFTWARE\Microsoft\Microsoft SQL Server\100が含まれています。MSSQLServerをインストールする前にMSSql Serverのバージョンがインストールされているかどうかを確認するにはどうすればよいですか?

EDIT

私はサイレントのC++でプログラムSQLSERVERをインストール今まで。

私は以下のコードを投稿:

SHELLEXECUTEINFO ShExecInfo; 
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); 
ShExecInfo.fMask = NULL; 
ShExecInfo.hwnd = NULL; 
ShExecInfo.lpVerb = NULL; 
ShExecInfo.lpFile = L"D:\\Softies\\SQLEXPR.EXE"; 
ShExecInfo.lpParameters = L"/qn addlocal=all InstanceName=SQLEXPRESS DisableNetworkProtocols=0 SECURITYMODE=SQL SAPWD=root SQLAUTOSTART=1 SQLBROWSERAUTOSTART=1 ENABLERANU=0"; 
ShExecInfo.lpDirectory = NULL; 
ShExecInfo.nShow = SW_MAXIMIZE; 
ShExecInfo.hInstApp = NULL; 

ShellExecuteEx(&ShExecInfo); 

int nResult=0; 
nResult = (int)ShExecInfo.hInstApp; 
if(nResult >32) 
cout<<"EXE executed successfully"<<endl; 
else 
cout<<"Reason for failure is" <<nResult<<endl; 
return 0; 

答えて

1
  • を使用すると、ローカル管理者であればあなたは、ブルートフォースのを除いて

しかし

をサーバーの資格情報を取得することはできません - コマンドラインからスタートアップキー-fを使用してSQL Serverを起動し、それを試してみることができます。これは保証されていませんあなたは試すことができます。

  • それは簡単にあなたのニーズやCオレグ@ ++/

    private void GetSqlDefaultInfo(string ServerName, string InstanceName) 
    { 
    
        InstanceName = string.IsNullOrEmpty(InstanceName) ? "MSSQLSERVER" : InstanceName; 
    
        if (string.IsNullOrEmpty(ServerName)) 
         ServerName = Environment.MachineName; 
        using (var registryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName)) 
        { 
         object sqlInstance; 
         using (var subKey = registryKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL")) 
          sqlInstance = subKey.GetValue(InstanceName); 
         if (sqlInstance != null && !string.IsNullOrEmpty(sqlInstance.ToString())) 
         { 
          var sqlPathKey = string.Format(@"SOFTWARE\Microsoft\Microsoft SQL Server\{0}\MSSQLServer", 
                  sqlInstance); 
          object defaultData, defaultLog, backupDirectory, sqlPath; 
          using (var subKey = registryKey.OpenSubKey(sqlPathKey)) 
          { 
           defaultData = subKey.GetValue("DefaultData"); 
           defaultLog = subKey.GetValue("DefaultLog"); 
           backupDirectory = subKey.GetValue("BackupDirectory"); 
          } 
          sqlPathKey = string.Format(@"SOFTWARE\Microsoft\Microsoft SQL Server\{0}\Setup", sqlInstance); 
    
          using (var subKey = registryKey.OpenSubKey(sqlPathKey)) 
           sqlPath = subKey.GetValue("SQLDataRoot"); 
          DataFilePath = defaultData != null 
               ? defaultData.ToString() 
               : Path.Combine(sqlPath.ToString(), "Data").TrimEnd('\\'); 
    
          LogFilePath = defaultLog != null 
               ? defaultLog.ToString() 
               : Path.Combine(sqlPath.ToString(), "Data").TrimEnd('\\'); 
          FTSIndexFilePath = DataFilePath; 
          ContentFilePath = DataFilePath; 
          BackupFilePath = backupDirectory != null 
               ? backupDirectory.ToString() 
               : Path.Combine(sqlPath.ToString(), "Backup").TrimEnd('\\'); 
         } 
        } 
    } 
    
+0

に採用することができますので、私は、SQL Serverのインスタンスのためのいくつかのデフォルト値をチェックするコードを持っている:私は、SQLServerのをインストールしようとしました2005とSQL Server 2008の両方のサーバーがインストールされています。レジストリパスを確認しましたが、SQL Server 2005のSOFTWARE \ Microsoft \ Microsoft SQL Server \ 90とSqlServer 2008のSOFTWARE \ Microsoft \ Microsoft SQL Server \ 100が含まれています.Sql Serverのバージョンがインストールされているかどうかチェックできますか? – karthik

+0

@ Oleg:明らかに、私の質問の更新部分を確認してください。 – karthik

+0

@karthik 90または100(これらはバージョンでありインスタンスではありません)をチェックする必要はありません。 - MSSQLSERVER(またはMSSQL10_50.MSSQLSERVER - バージョンに依存します) - デフォルトインスタンスの場合、またはInstanceNameインスタンスのInstanceNameを確認する必要があります。 SQLEXPRESSインスタンスを設定する場合、チェックするレジストリキーはSOFTWARE \ Microsoft \ Microsoft SQL Server \ SQLEXPRESSです。 –

関連する問題