2012-02-09 162 views
1

嗨我所有的C#桌面應用程序使用數據庫,我們要求連接字符串應該是基於寡婦身份驗證。連接字符串是'Data Source = ServerName \ SQL2008R2; Initial Catalog = DatabaseName; Integrated Security = True;'

我們使用了設置項目來部署應用程序。我在Installer類添加的代碼設置完成如下

私人無效MyInstaller_Committed(對象發件人,InstallEventArgs E)

{ 

     try 

     { 

      Directory.SetCurrentDirectory(Path.GetDirectoryName 

      (Assembly.GetExecutingAssembly().Location)); 

      Process.Start(Path.GetDirectoryName(

       Assembly.GetExecutingAssembly().Location) + "\\ApplicationName.exe"); 

     } 

     catch(Exception ex) 

     { 

      MessageBox.Show(ex.Message); 

     } 

    } 

一切工作在Windows XP罰款後,啓動應用程序。但是在Windows 7上完成設置後第一次啓動應用程序時,它會拋出sql登錄失敗,用戶'DomainName \ WENATEHEE $'登錄失敗'但是,當我從程序菜單中明確啓動此應用程序時,它工作正常。我已向用戶提供了所有必需的許可。經過深入觀察,我發現首次啓動應用程序時,它將在SQL Server中以DomainName \ MachineName $而非DomainName \ User的身份登錄。

我沒有得到任何解決方案。任何幫助將不勝感激

在此先感謝

回答

0

安裝過程分爲兩個階段「直接模式」和「延遲模式」。後者使用'Windows Installer Service'執行腳本,因爲它們可能需要提升權限。
由於您的應用程序正在連接到外部系統,因此您的應用程序第一次在LocalSystem帳戶(因爲Windows Installer Service在此帳戶的上下文中運行)的上下文的第二階段中啓動(前面提到的「推遲模式」)它必須使用機器賬戶'DomainName \ WENATEHEE $'(不是LocalSystem賬戶)進行身份驗證。
這就是爲什麼你看到'登錄失敗的用戶'DomainName \ WENATEHEE $'錯誤。

嘗試添加在你的這個類的方法從Installer派生的執行:

protected override void OnAfterInstall(System.Collections.IDictionary savedState) 
{ 
    base.OnAfterInstall(savedState); 
    // add you app launching code here 
} 
+1

我已經添加在onAfterInstall方法的應用的啓動代碼,但我得到了同樣的錯誤。你能否提出其他建議 謝謝,納蘭德拉 – user1199661 2012-02-15 09:29:02

相關問題