2011-09-20 37 views
6

this MSDN sampleのように、LogonUser(...)を使用してユーザーアカウントのアクセストークンを取得しようとしました。LogonUser(...)がドメインアカウントで機能しないのはなぜですか?

// Call LogonUser to obtain a handle to an access token. 
bool returnValue = LogonUser(userName, domainName, Console.ReadLine(), 
    LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, 
    out safeTokenHandle); 

私は(管理者権限を持つ)のサンプルを実行すると.のドメインとローカルユーザーアカウント名とパスワードが与えられたときにそれがうまく動作しますが、関係なく、私は何をすべきか、私は、エラーコード1326(ログオン失敗を取得していません:不明なユーザー名または不正なパスワード)ドメインアカウントを使用しようとすると私はドメインにゴミを入れれば同じ結果になるので、DCに実際に接触しているかどうか疑問に思う。

これが機能しなくなる原因は何ですか?私の場合は

+1

これは残念なことに大量のものが原因である可能性があります。マシンはドメインに接続されていますか?ドメインユーザーはそのマシンにログオンできますか? DNS設定は正しく設定されていますか? (私はこれが問題になるかもしれないことを示唆したCitrixの記事を見ました)。次の記事では、ドメインのごみを入力する際に​​何が起こっているかについての情報があります。https://groups.google.com/group/microsoft.public.dotnet.languages.csharp/msg/dccfbf8b76120401?pli=1 –

+0

これはConsole.ReadLine()呼び出しなしで動作することを検証しました(例えばパスワードを直接文字列として入力するなど)? –

+0

パスワードはどこから来るのかは違います。パスワードは 'LogonUser'に渡されるときの文字列です。 – GraemeF

答えて

0

その場合の空のドメイン名と使用DOMAIN\LOGIN ...

+0

'LogonUser'に渡されたドメイン名がnullの' DOMAIN \ USERNAME'と 'USERNAME @ DOMAIN'の両方で同じエラーが発生します。 – GraemeF

1

は、私がドメインユーザーとして自分のコンピュータにログインしていたが、私のコンピュータは、自身がの一部ではなかった、ということでしたドメイン。一旦ドメインに追加されると、サンプルが機能し始めました。

+7

ドメインに参加していないドメインユーザーとして、どのようにしてコンピュータにログインしますか? – WilfriedVS

1

私のケースでは、質問者と同様に、認証しようとしていたアカウントが、現在のマシンが属していないドメインにあったということでした。オリジナルのポスターとは異なり、私のマシンはこの他のドメインに参加してはならないし、できないはずです。私は、このドメイン上のリソースに対して、ログインがアクションを実行することを望んでいました。

答えが定義された次の定数と、次の

bool success = LogonUser(
       userName, 
       domain, 
       password, 
       (int)LOGON32_LOGON_NEW_CREDENTIALS, //9 
       (int)LOGON32_PROVIDER_DEFAULT, //0 
       out userToken); 

た:

public const int LOGON32_LOGON_NEW_CREDENTIALS = 9; 
public const int LOGON32_PROVIDER_DEFAULT = 0; 

うまくいけば、これは、似たような状況で失われた人を助けるだろう。

関連する問題