在单独的进程中运行.net代码
问题描述:
在与Sharepoint相关的模拟场景中,我需要在单独的进程中执行一些代码(该进程将在特定用户的上下文中运行)。我不想启动一个单独的应用程序,基本上我想在一个方法上做一个“运行”。在单独的进程中运行.net代码
答
如果您有适当的用户,密码和域,Process.Start方法具有重载启动过程。
你想要做的是创建一个ProcessStartInfo对象,并在启动过程时指定正确的用户名和密码。所以你可以做这样的事情:
Dim psiNewProcess As New ProcessStartInfo("Notepad.exe")
psiNewProcess.UserName = "MyUserName"
psiNewProcess.Password = "MyPassword"
Process.Start(psiNewProcess)
哦,进程是在System.Diagnostics命名空间,如果它尚未为您的项目导入。
编辑:快速旁注,密码字段实际上是一个SecureString的对象类型,所以MSDN建议以这种方式填充值:
Dim instance As ProcessStartInfo
Dim value As SecureString
value = instance.Password
instance.Password = value
答
“执行单独进程中的代码”=“启动单独的应用程序”。
我的意思是,你可以启动一个进程,然后向它发出请求来运行特定的方法......但不清楚这是否是你想要的。
答
我还没有尝试过这个,但this seems做的伎俩。
如果你没有模拟方法阻塞,直到它完成它应该工作。 所以,你的代码将是这样的:
...
WrapperImpersonationContext context = new WrapperImpersonationContext(domain, username, password);
context.Enter();
Results res = MyImpersonatedMethod(data);
context.Leave();
...
希望这有助于。
+0
链接现已停止 – 2011-12-06 12:00:48
你能指向哪里可以找到关于此主题的更多信息,也许一个例。这是我想要做的。 – kjv 2008-11-20 15:07:52
基本上你需要开始一个新的过程(一次)并通过命名管道(或其他)进行通信。如果您使用的是.NET的最新版本,那么WCF可能是最好的选择 - 所以选择一本WCF书或教程。 – 2008-11-20 15:23:52