5

advapi32.dllのlogonuserメソッドを使用して、ネットワーク経由でデータにアクセスします。
スレッドのユーザーを私が提供する情報に変更することは知っていますが、それを元に戻す方法があるかどうか疑問に思っていました。
データにアクセスしてから、ローカルユーザーの資格情報に戻りたい。

4

2 に答える 2

7

少し前に、小さななりすましクラスを作成しました。

基本的に、コードをラップして、 usingブロック内で別のユーザーの下で実行します。

using ( new Impersonator( "myUsername", "myDomainname", "myPassword" ) )
{
   ...

   <code that executes under the new context>

   ...
}

私のプロジェクトでは非常にうまくいきました。

于 2011-10-03T09:49:22.150 に答える
1

と呼ぶことができますRevertToSelf

とは言うものの、なりすましタスク専用のスレッドを起動し、なりすまし作業が完了したときにそれを終了することについては、言うべきことがあります。これにより、偽装作業が分離され、コールバックまたはメッセージがメインスレッドで処理される場合、それらは偽装ユーザーではなくプリンシパルユーザーのコンテキストで実行されます。実際、これについて考えれば考えるほど、専用のスレッドが解決策であると感じます。

于 2011-10-03T09:32:59.553 に答える