我正在尝试构建一个旨在执行多项任务的C#应用程序[例如
同时打开文件,打开端口,生成Windows服务等以下是我的要求: -
a)应用程序应该能够同时运行这些任务[每个任务通过单独的线程启动,但在同一个应用程序域内部启动] b)每个线程应在单独的Windows用户帐户的帐户下运行[在应用程序通过存储库/表启动之前将提供用户名和密码]
请建议在C#中实现此目的的最佳方法? 谢谢, 萨米特
答案 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());