外部程序在模拟启动时崩溃,但在运行时工作

本文关键字:运行时 崩溃 工作 程序 模拟 启动 外部 | 更新日期: 2023-09-27 17:56:44

My .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)

外部程序在模拟启动时崩溃,但在运行时工作

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

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

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