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 回答