【问题标题】:Open an exe file programmatically以编程方式打开 exe 文件
【发布时间】:2014-06-13 12:03:17
【问题描述】:

我有一个 Windows 应用程序,当你运行它时,首先检查是否有新版本的应用程序。如果有新版本,它会下载 exe 然后尝试运行它。当它尝试运行 exe 时,如果用户没有以管理员身份运行应用程序,则会发生错误。但是,如果他们确实以管理员身份运行它,一切正常。请在下面找到我用来打开 exe 的代码。我不确定我做错了什么。请协助。谢谢。

  Private Sub DownloadFileCompletedCallBack(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)
    Dim processStartInfo As ProcessStartInfo = New ProcessStartInfo()
    processStartInfo.FileName = _tempPath
    processStartInfo.Verb = "runas"
    Process.Start(processStartInfo)
    Close()
End Sub

我得到的错误如下 System.ComponentModel.Win32Exception (0x80004005):请求的操作需要 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 在 System.Diagnostics.Process.Start() 在 System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 的提升

【问题讨论】:

    标签: file exe processstartinfo


    【解决方案1】:

    如果您以管理员权限启动应用程序会发生什么?

    我认为应用程序是通过调用者应用程序访问启动的。

    【讨论】:

    • 如果我以管理员身份运行应用程序,它工作正常。但即使用户不以管理员身份运行它,我也需要它运行
    【解决方案2】:

    新版本是从哪里下载的?该位置的访问权限是否受限?此外,用户本地安装位于何处,它可能正在更新该位置受到限制,这就是阻止自我更新的原因。因此,如果程序需要此提升权限,您将需要处理部署环境的权限要求。还要检查用户计算机上的 Windows 事件日志以获取有关导致异常的原因的更多详细信息,这可能是更具体的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多