【发布时间】:2008-11-20 14:49:15
【问题描述】:
在与 Sharepoint 相关的模拟场景中,我需要在单独的进程中执行一些代码(该进程将在某个用户的上下文中运行)。我不想启动单独的应用程序,基本上我只想对一个方法执行“运行方式”。
【问题讨论】:
标签: .net concurrency process
在与 Sharepoint 相关的模拟场景中,我需要在单独的进程中执行一些代码(该进程将在某个用户的上下文中运行)。我不想启动单独的应用程序,基本上我只想对一个方法执行“运行方式”。
【问题讨论】:
标签: .net concurrency process
我自己还没有尝试过,但 this seems 可以做到这一点。
如果模拟方法阻塞直到完成,它应该可以工作。 所以你的代码会是这样的:
...
WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);
context.Enter();
Results res = MyImpersonatedMethod(data);
context.Leave();
...
希望这会有所帮助。
【讨论】:
如果您有适当的用户、密码和域,Process.Start 方法有一个重载来启动进程。
您要做的是创建一个 ProcessStartInfo 对象并在启动进程时指定正确的用户名和密码。所以你可以这样做:
Dim psiNewProcess As New ProcessStartInfo("Notepad.exe")
psiNewProcess.UserName = "MyUserName"
psiNewProcess.Password = "MyPassword"
Process.Start(psiNewProcess)
哦,如果尚未为您的项目导入 Process,则 Process 位于 System.Diagnostics 命名空间中。
编辑:快速旁注,密码字段实际上是一个 SecureString 类型的对象,因此 MSDN 建议以这种方式填充值:
Dim instance As ProcessStartInfo
Dim value As SecureString
value = instance.Password
instance.Password = value
【讨论】:
"在单独的进程中执行代码" = "启动单独的应用程序"。
我的意思是,你可以启动一个进程,然后向它发出请求以运行特定的方法……但不清楚这是否是你想要的。
【讨论】: