在单独的进程中运行.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 

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

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

+0

你能指向哪里可以找到关于此主题的更多信息,也许一个例。这是我想要做的。 – kjv 2008-11-20 15:07:52

+0

基本上你需要开始一个新的过程(一次)并通过命名管道(或其他)进行通信。如果您使用的是.NET的最新版本,那么WCF可能是最好的选择 - 所以选择一本WCF书或教程。 – 2008-11-20 15:23:52

我还没有尝试过这个,但this seems做的伎俩。

如果你没有模拟方法阻塞,直到它完成它应该工作。 所以,你的代码将是这样的:

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

Results res = MyImpersonatedMethod(data); 

context.Leave(); 
... 

希望这有助于。

+0

链接现已停止 – 2011-12-06 12:00:48