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

在单独的进程中运行.net代码,.net,concurrency,process,.net,Concurrency,Process,在与Sharepoint相关的模拟场景中,我需要在单独的流程中执行一些代码(该流程将在特定用户的上下文中运行)。我不想启动一个单独的应用程序,基本上我只想在一个方法上执行“运行方式”。“在单独的进程中执行代码”=“启动一个单独的应用程序” 我的意思是,你可以启动一个进程,然后请求它运行特定的方法。。。但不清楚这是否是你想要的。我自己没有尝试过,只是为了达到目的 如果您在模拟方法阻塞完成之前对其没有问题,那么它应该可以工作。 因此,您的代码类似于: ... WrapperImpersonation

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

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


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

我自己没有尝试过,只是为了达到目的

如果您在模拟方法阻塞完成之前对其没有问题,那么它应该可以工作。 因此,您的代码类似于:

...
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)
噢,进程位于System.Diagnostics命名空间中(如果尚未为项目导入)

编辑:Quick sidenote,密码字段实际上是SecureString类型的对象,因此MSDN建议以以下方式填充值:

Dim instance As ProcessStartInfo
Dim value As SecureString

value = instance.Password

instance.Password = value

你能指出哪里可以找到更多关于这个主题的信息吗,也许是一个例子。这就是我想要做的。基本上,你需要启动一个新的进程(一次)并通过一个命名的管道(或其他什么)进行通信。如果您使用的是最新版本的.NET,WCF可能是最好的选择-因此请选择WCF书籍或教程。我不想启动新的应用程序。是否可以使用ProcessStartInfo从我在其中创建新进程的应用程序中运行一段代码?不,不可能使用ProcessStartInfo来执行此操作。但它在url中显示Permalink!:)我猜是这样的:谷歌WrapperImpersonationContext会返回一些结果。3年后。。。