你如何从VB.NET运行另一个.exe作为另一个用户?

fig*_*gus 5 vb.net excel impersonation interop

你如何从VB.NET运行另一个.exe但作为另一个用户?

我希望启动一个.exe,如"左键单击 - >运行为 - >输入用户/通行证 - >单击确定"如果我这样做,我的应用程序按预期运行(我需要以另一个用户身份运行它以访问某些用户)网络中的文件夹)

但是如果我在VB.NET中使用它 System.Diagnostics.Process.Start(System.Windows.Forms.Application.ExecutablePath, PARAMETER, USER, PASSWORD, DOMAIN)

应用程序与其他用户一起运行..但Excel(在我的App with Interop中)无法打开受限文件夹中的文件.

(我再次运行相同的应用程序,但使用不同的用户,只是为了避免创建更多的.exe文件...但我已经尝试过使用vbScript)

再次,Process.Start FAILS使用其他用户打开excel ...但是左键单击 - >运行成功,为什么?其他方式??

这就是应用程序的作用:

  1. 打开应用程序
  2. 检查是否有参数
  3. 如果没有参数,则重新启动应用程序与其他用户并发送一些参数
  4. 如果有一个参数打开excel
  5. 打开一个xlsx文件

但如果我双击... Excel打开...使用50%的CPU,并给我一个错误,它无法打开文件...

如果我直接与所需的用户一起运行并传递...一切正常执行任何建议如何解决这个问题?(模仿工作正常..但它与实际用户打开Excel ..而不是具有权限的人)

谢谢!

Mar*_*ark 0

这真的很有趣。默认情况下,我相信 Excel COM 组件设置为以交互用户(即登录到该框的用户)身份运行。如果它们配置为以启动用户身份运行,则模拟应该可以工作。当然,这并不能解释为什么“运行为...”有效(我不知道其机制,所以也许它不是模仿)。

一种想法是重构应用程序,将文件复制到 Excel 可以访问、操作它们的位置,然后复制回来。