如何让当前进程稍后用于启动应用程序

时间:2015-12-31 08:43:05

标签: vb.net wix

我已经使用自定义WPF UI构建了一个WIX项目,该UI必须以提升的权限运行。安装/更新后,我想启动我的应用程序,但我不希望应用程序以提升权限启动。

目前我正在做以下

In"受保护的覆盖子运行()"我做了以下

Dim m_LowProcess As Process = Process.GetCurrentProcess

然后,一旦安装程序完成,我运行以下代码

        Dim procStartInfo As New ProcessStartInfo

            With procStartInfo
                .FileName = fInfo.FullName
                .WindowStyle = ProcessWindowStyle.Normal
            End With
            m_LowProcess.StartInfo = procStartInfo
            m_LowProcess.Start()

我检查过程ID和句柄属性,它们是相同的。但是我的程序在安装后仍然以不同的权限运行。

我做错了什么或者这是不会有用的?

我知道of this forum question which solves the problem other ways.

1 个答案:

答案 0 :(得分:0)

我不确定您的代码在做什么,但我相信正确的方法就像ProcessStartinfo文档中的这个例子一样:

https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.useshellexecute(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

通过指定可执行文件的路径并确保UseShellExecute为true来启动已安装的应用程序,以便进程启动的行为类似于资源管理器运行(没有特权继承)。如果您不知道可执行文件的安装位置,那么对MsiGetComponentPath的p / invoke传递其组件ID和产品的产品代码将告诉您: https://msdn.microsoft.com/en-us/library/aa370112(v=vs.85).aspx