2009-03-04 7 views
1

C#3.0のローカルWindowsユーザーアカウントを認証する方法。私がパスワードを検証する必要があるWindows OSは、VistaとWin2K8です。 注:ユーザーアカウントはローカルアカウントであり、ドメインアカウントではありません。 C#3.5(PrincipalContextクラス)で解決策を見つけましたが、3.0フレームワークで見つけられませんでした。 お礼をお寄せくださいC#3.0のWindowsローカルユーザーアカウントの認証

+0

あなたはどのようなアカウントを認証していますか?そのユーザーとしていくつかのコードを実行するのですか?それとも、そのユーザーとしていくつかのリソースにアクセスするのですか? – mundeep

+0

システム上にいくつかのアカウントを作成するインストーラを用意しています。システムに既にこれらのアカウントがある場合、そのユーザーが提供するパスワードでアカウントを認証する必要があります。 –

答えて

3

ローカルユーザーを検証する場合は、LogonUserを使用してこれを行うことができます。ローカルユーザーとリモートユーザーの両方を検証できます。ローカルユーザーは、ドメインの代わりにマシン名を渡すだけです。

次のブログでは、この関数をC#から呼び出す方法について詳しく説明しています。

[ http://alt.pluralsight.com/wiki/default.aspx/Keith.GuideBook/HowToGetATokenForAUser.html]

https://web.archive.org/web/20110224015020/http://alt.pluralsight.com/wiki/default.aspx/Keith.GuideBook/HowToGetATokenForAUser.html

EDIT

これは、ユーザーを認証するための最良の方法です。セッションを終了したら、結果のトークンにCloseHandleを呼び出す必要があります。

+0

情報ありがとうございます。それは完璧に働いています。しかし、それが作成するログオンセッションについてのみ納得しています。私はこれについて多くのアイデアを持っていません。これはpwdの妥当性を検証する必要があるときに従う良いアプローチですか?セッションをログオフするコードを書く必要がありますか? pwdを検証するストレートな方法はありますか? –

+0

これは問題ありません。これは、サービスがユーザーの資格情報を検証するために使用するのと同じAPIです。ログオンタイプのNETWORK(3)は、ユーザーのプロファイルなどをロードしないと信じています。返されたハンドルを必ず閉じてください。 – Josh

+2

Jared、リンクが壊れています。 –