みなさん、こんにちは。
Windowsにログオンする前にそのユーザーが実在するかどうかを調べるAPI関数が
あると聞いたのですが、ご存知の方教えてください。
具体的には
Ginaおよび「Windowsへログオン」画面をカスタマイズし、
カスタマイズした「Windowsへログオン」画面で入力された
ユーザー名、パスワード、ログオン先(ドメイン参加)
で実際にログオンする前に、
そのユーザー情報でログオン可能かどうかをチェックしたいのです。
環境は、
Wondows XP SP2、
VC++2005
です。
よろしくお願いします。
関数一発でわかるようなのがあると思っていたのですが、
どうやらそうはいかないことがわかりました。
考えてみます。
NetUserGetInfoはつかえませんか?
conaさん、レスありがとうございます。
また気がつくのがかなり遅くなってすみません。
NetUserGetInfoは何らかの理由で使えなかった記憶があります。
(理由は忘れてしまいました。)
マイクロソフトの下記URLにサンプルプログラムが載っていましたので貼っておきます。
ttp://support.microsoft.com/default.aspx?scid=kb;ja;180548
しかし数回に一回の割合でログオンできないときがあり、ものすごーく悩んでいます。
上記URLサンプルプログラムの360行目から呼んだ場合のGenServerContext()の内部で、
_AcceptSecurityContext()からSEC_E_LOGON_DENIEDが返ってくるときがあります。
(ちなみに344行目のGenServerContext()は正常終了)
これがなぜなのか・・・
メイン関数SSPLogonUser()に渡すパラメタは固定にしてます。
SSPLogonUser()を呼ぶタイミングは『Windowsへログオン』画面を表示する直前です。
なので、サービスなどは立ち上がっている最中です。
>Windowsにログオンする前にそのユーザーが実在するかどうかを調べるAPI関数が
>あると聞いたのですが、ご存知の方教えてください。
CredUIConfirmCredentialsという関数が名前的に怪しいですな。