私は自分のActive Directoryクライアントを学習しています。アカウントのロック解除やパスワードのリセットなどのコマンドを実行するには、自分の管理者アカウントとパスワードを入力し、WindowsIdentity.Impersonate
を管理者アカウントとして実行する必要があります。私は私のプログラム全体で何度も使用されなければならないので、私は自分のパスワードを確保するための選択肢について疑問を抱いています。LogonUserでSecureStringを使用
私が理解するところでは、SecureString
を使用してパスワードを保存できます。しかし、私はWindowsIdentity.Impersonate
を使用して、私は定期的にstring
なくSecureString
必要ですLogonUser
からトークンを取得する必要があることを使用する必要があり、私の管理者アカウントとしてコードを実行します。
だから私はしなければならない。そして、後でとき、私入力
SecureString
クリアへの入力に変換
を起動時に
ログイン仰角が必要な機能を実行したい:
以前
SecureString
string
から作成した変換は、変換文字列をクリア
LogonUser
へnull
に変換された文字列を渡し、コマンドに
Cを実行します
LogonUser
オブジェクト
これは正しいアプローチですか?それを使用するには
SecureString
をstring
に変換する必要があることは変だと思われます...私はそれを変換している間に目的を破り、パスワードをより脆弱にしているようです。EDIT:あなたがパスワードの代わりに
IntPtr
のstring
を使用するLogonUser
を宣言する方法を変更、あなたのUserImpersonation
クラスでのLogonUser
文字列に変換すると目的が無効になることは間違いありません。 UserImpersonationとは何ですか?それはWin32 APIに突き当たりますか?文字列ではなくIntPtrで渡す関数を変更する必要があります。 –
申し訳ありませんが、私の質問を解決します。ええ、 'UserImpersonation'は私が以前に長い時間書いたクラスです...それは基本的に[LogonUser]のラッパーです(http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184%28v= vs.85%29.aspx)は、パスワードの文字列も要求します。それは 'IntPtr'に変更できますか?その場合、代わりに 'SecureString'をパスワードパラメータに渡すことができますか?(今は試してみたいが、私はもはや仕事をしていない...) – duckwizzle
いいえ、あなたは 'SecureString'を直接使うことはできませんが、安全にパスワードを渡すのは難しくありません。私は下に答えます... –