![](/img/trans.png)
[英]Connecting to WCF service in Windows Phone 8 (C#) by using domain credentials
[英]Connecting To A Database Using Windows Authentication With Different Credentials using C#
也許有人可以幫助我。 我正在用C#編寫一個程序來連接遠程服務器上的數據庫。 有問題的服務器使用Windows身份驗證。 我也不是服務器的管理員。
無論如何使用SQL Server Management Studio連接到服務器,我必須使用不同的憑據。 所以我使用runas.exe進行連接。
基本上,有些東西:
runas.exe / netonly / user:DIFFERENT_DOMAIN \\ SAME_USERNAME“C:\\ Program Files(x86)\\ Microsoft SQL Server \\ 100 \\ Tools \\ 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與正確的憑據。 它會正常工作並連接。 但是我不想使用它。
任何人都知道如何使連接工作?
您可以從c#代碼模擬域用戶。 這個問題有一些例子:
感謝誰說關於Windows模擬! 在看了這個並且谷歌搜索關於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。 它工作得很好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.