在C#应用程序中同时执行多个任务,每个任务都在一个单独的Windows用户帐户下

时间:2012-07-30 21:25:54

标签: c# multithreading windows-authentication appdomain

我正在尝试构建一个旨在执行多项任务的C#应用​​程序[例如

同时打开文件,打开端口,生成Windows服务等

以下是我的要求: -

a)应用程序应该能够同时运行这些任务[每个任务通过单独的线程启动,但在同一个应用程序域内部启动] b)每个线程应在单独的Windows用户帐户的帐户下运行[在应用程序通过存储库/表启动之前将提供用户名和密码]

请建议在C#中实现此目的的最佳方法? 谢谢, 萨米特

2 个答案:

答案 0 :(得分:1)

以下是我的研究工作: - a)DllImport LogonUser,SetThreadToken和LogOffUser API b)记录用户并获取句柄/令牌 c)使用SetThreadToken创建线程并在线程上设置令牌 d)运行/执行线程。现在,线程将执行操作,就好像在其凭据随LogonUser API提供的用户的帐户下运行一样 e)线程完成其工作后,调用LogoffUser API将用户从线程中注销。

这对我有用!

但是,我很想知道我是否可以使用托管/纯C#API来实现这一点。

任何?

答案 1 :(得分:0)

不确定您是否可以在不同的用户凭据下运行不同的任务/线程,尽管您可以调用,这与使用不同的用户凭据运行不同的线程不同。

Process.Start(filenameToStart, username, password, domain);

可以使用并行处理Parallel.Invoke

Parallel.Invoke( () => doX(), () => doY());