2011-12-09 9 views
4

おそらく誰かが私をここで助けることができます。私はC#でリモートサーバー上のデータベースに接続するプログラムを書いています。問題のサーバーはWindows認証を使用します。私はまた、サーバーの管理者でもありません。データベースへの接続C#を使用して異なる資格証明を使用してWindows認証を使用する

SQL Server Management Studioを使用してサーバーに接続する場合は、別の資格情報を使用する必要があります。だから、私はrunas.exeを使って接続します。

基本的に、の線に沿って何か:

runas.exe/netonly /ユーザー:DIFFERENT_DOMAIN \ SAME_USERNAME「C:Binnの\ VSShell \ Common7 \ \プログラムファイル(x86の)\ Microsoft SQL Serverの\ 100 \ツール\ 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の偽装についての周りグーグルでの後、私は

[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にログオン旗を見に走りました。それは完璧に働いた。

関連する問題