2

我的 .Net-Windows-Forms-Application 以另一个用户身份运行。该程序启动另一个从互操作程序集实例化的 .net-exe。尝试从互操作程序集实例化时,外部程序崩溃。如果我按 Shift-RightClick-RunAsOtherUser 启动外部 exe 并输入与模拟相同的登录数据,则程序可以正常工作。

也许它有什么。与我的流程开始通话有关:

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName         = Path.Combine(System.Windows.Forms.Application.StartupPath, exeFile);
startInfo.Arguments        = arguments;
Process process            = Process.Start(startInfo);
process.WaitForExit();

[编辑]

崩溃详细信息: 在 vmWare 和我的开发机器上:没有异常窗口,什么都没有,外部应用程序被执行然后消失(我在其中放了一些消息框进行检查)。

在客户机器上:异常窗口

Unknown error (0xffff...e)
Win32Exception
System
StartWithShellExecuteEx
  at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start()
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
4

1 回答 1

0

如果您知道用户名和密码,则可以在进程的启动信息中设置这些属性。如果只有一个模拟令牌,我认为您使用 CreateProcessAsUser ttp://msdn.microsoft.com/en-us/library/windows/desktop/ms682429%28v=vs.85%29.aspx 的 pinvoke 卡住了

Process.Start 使用用户名、密码和域重载:http: //msdn.microsoft.com/en-us/library/sxf2saat.aspx

PInvoke CreateProcessAsUser 已经有一个 SO 问题和答案:https ://stackoverflow.com/a/671368/884862

于 2013-01-30T14:24:54.847 回答