gpt4 book ai didi

vb.net - 如何以另一个用户身份从 VB.NET 运行另一个 .exe?

转载 作者:行者123 更新时间:2023-12-02 08:42:19 28 4
gpt4 key购买 nike

如何以另一个用户身份从 VB.NET 运行另一个 .exe?

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

但是如果我在 VB.NET 中使用它System.Diagnostics.Process.Start(System.Windows.Forms.Application.ExecutablePath、参数、用户、密码、域)

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

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

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

这就是应用程序的作用:

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

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

如果我直接使用所需的用户运行它并通过...一切都会正常执行关于如何解决这个问题有什么建议吗? (模拟工作正常..但它用实际用户打开Excel..而不是有权限的用户)

谢谢!

最佳答案

如果您收到“句柄无效”错误,您应该尝试如下操作:

dim info As New ProcessStartInfo("...")

info.UseShellExecute = False

info.RedirectStandardInput = True //This is the key

info.RedirectStandardError = True //This is the key

info.RedirectStandardOutput = True //This is the key

info.UserName = "username"

info.Password = "password"

Using (install As Process = Process.Start(info))


Dim output As String = install.StandardOutput.ReadToEnd()

install.WaitForExit()


End Using

指定以下任意一项RedirectStandardOutput=true、RedirectStandardError=true 或 RedirectStandardInput=true导致进程以 STARTF_USESTDHANDLES 启动。如果您的进程没有任何这些句柄,则 CreateProcessWithLogon 将失败并显示“无效句柄”。

您必须重定向它(即使您不打算向其中写入任何内容)。

问候

关于vb.net - 如何以另一个用户身份从 VB.NET 运行另一个 .exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com