2011-12-09 53 views
4

也許有人可以幫助我。我正在用C#編寫一個程序來連接到遠程服務器上的數據庫。有問題的服務器使用Windows身份驗證。我也不是服務器的管理員。使用C#使用不同憑證使用Windows身份驗證連接數據庫

在任何情況下使用SQL Server Management Studio連接到服務器我必須使用不同的憑據。所以我使用runas.exe來連接。

基本上沿着東西線:

runas.exe/netonly /用戶:DIFFERENT_DOMAIN \ SAME_USERNAME「C:\ Program Files文件(x86)的\ Microsoft SQL Server的\ 100個\工具\ BINN \ VSShell \ Common7 \ IDE \ Ssms.exe「

使用runas.exe是我可以連接到數據庫的唯一方法,如果我嘗試運行沒有runas的ssms,我根本不會連接。

所以,現在我的問題。在我用C#編寫的程序中。如何讓我的程序使用不同的憑據連接到同一個數據庫,而無需使用runas.exe?

我已經嘗試使用:

Sqlconnection sc = new Sqlconnection(); 
sc.ConnectionString = "Data Source= myServer;Initial Catalog= myDB;Integrated Security=true"; 
sc.Open(); 

但我只是得到「用戶登錄失敗'與可信SQL Server連接關聯的用戶。」

如果我使用上面的代碼和Runas.exe與正確的憑據。它會正常工作並連接。但我不想使用它。

任何人都有任何想法如何讓連接工作?

回答

1

感謝誰說,有關Windows假冒!看着那和周圍的Googling有關Windows模擬後,我跑進

[DllImport("advapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] 
    public static extern bool CreateProcessWithLogonW(
    String    userName, 
    String    domain, 
    String    password, 
    LogonFlags   logonFlags, 
    String    applicationName, 
    String    commandLine, 
    CreationFlags   creationFlags, 
    UInt32    environment, 
    String    currentDirectory, 
    ref StartupInfo  startupInfo, 
    out ProcessInformation  processInformation); 

而且看到登錄標誌來LOGON_NETCREDENTIALS_ONLY。它工作完美。

相關問題