在单独的进程中运行.net代码

时间:2008-11-20 14:49:15

标签: .net concurrency process

在与Sharepoint相关的模拟场景中,我需要在单独的进程中执行一些代码(该进程将在特定用户的上下文中运行)。我不想启动单独的应用程序,基本上我想在一个方法上执行“运行”。

3 个答案:

答案 0 :(得分:3)

我自己没有尝试过这个,而是this seems来做这个伎俩。

如果您使用模拟方法阻止,直到它完成它应该工作。 所以你的代码应该是这样的:

...
WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);
context.Enter();

Results res = MyImpersonatedMethod(data);

context.Leave();
...

希望这有帮助。

答案 1 :(得分:1)

“在单独的进程中执行代码”=“启动一个单独的应用程序”。

我的意思是,你可以启动一个进程,然后向它发出请求以运行特定的方法......但是不清楚这是否是你想要的。

答案 2 :(得分:1)

如果您拥有适当的用户,密码和域,Process.Start方法会有一个重载来启动进程。

您要做的是创建ProcessStartInfo对象,并在启动进程时指定正确的UserName和Password。所以你可以这样做:

Dim psiNewProcess As New ProcessStartInfo("Notepad.exe")

psiNewProcess.UserName = "MyUserName"
psiNewProcess.Password = "MyPassword"

Process.Start(psiNewProcess)

哦,如果尚未为您的项目导入,则Process位于System.Diagnostics命名空间中。

编辑:快速旁注,密码字段实际上是一个SecureString类型的对象,因此MSDN建议以这种方式填充值:

Dim instance As ProcessStartInfo
Dim value As SecureString

value = instance.Password

instance.Password = value