2

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

4

3 回答 3

3

我自己没有尝试过,但这似乎可以解决问题。

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

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

Results res = MyImpersonatedMethod(data);

context.Leave();
...

希望这可以帮助。

于 2008-11-20T15:03:45.520 回答
1

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

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

于 2008-11-20T14:54:58.937 回答
1

如果您有适当的用户、密码和域,Process.Start 方法具有启动进程的重载。

您要做的是创建一个 ProcessStartInfo 对象并在启动进程时指定正确的用户名和密码。所以你可以做这样的事情:

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
于 2008-11-20T15:15:34.963 回答