【问题标题】:Run another program as administrator以管理员身份运行另一个程序
【发布时间】:2013-05-24 03:15:33
【问题描述】:

所以我尝试用谷歌搜索,但没有得到很好的结果。我试图做的是以管理员身份运行另一个程序,而不会每次都弹出烦人的 UAC。

这个想法是这样的,这个程序需要管理员权限才能运行,用户将授予该权限。然后这个程序将运行一堆也需要管理员权限的其他程序。拥有管理员权限的程序可以以管理员身份运行其他程序,而不是用户不时点击并允许一堆程序,因为它本身就拥有它。

这将使用户免于遵循许多指令。此外,让程序要求用户允许许多事情看起来非常不专业。它只是一个可以完成所有操作的一键式程序。

我之所以说谷歌没有得到好的结果是因为页面上充斥着用户如何以管理员身份运行他们的程序。我希望能够以管理员身份运行另一个程序。

我正在考虑将安装文件放到一个文件夹中,然后从 CMD 以管理员身份运行文件,但这需要我使用 runas 并且在我自己测试之后,它一直说密码/用户名是错误的但我确信它是。

还有什么建议吗?

【问题讨论】:

  • 看看这个,看看它是否有帮助:mztools.com/articles/2009/MZ2009007.aspx。另一个有趣的可能是:codeproject.com/Articles/17968/…。第一个链接看起来像你的答案。第二个可能会使事情变得更容易,也可以解释 UAC 会发生什么。
  • 如果您需要进一步了解,这里是我的 googlefoo:process.start vb.net uac
  • 如果您的进程以管理员身份运行,则它直接启动的任何进程也将以管理员身份运行。那么你的问题到底是什么?

标签: windows vb.net admin uac


【解决方案1】:

您可以使用以下命令从您的应用程序运行另一个应用程序:

Process.Start("Notepad.exe")

如果您的原始程序运行的是 Elevated (As Admin),那么记事本将以管理员身份运行(不会有 UAC 提示)

如果您的原始程序运行提升,并且您想要启动提升的应用程序(以管理员身份),您将必须执行以下操作(这将提示提升):

    Dim procStartInfo As New ProcessStartInfo
    Dim procExecuting As New Process

    With procStartInfo
        .UseShellExecute = True
        .FileName = "Notepad.exe"
        .WindowStyle = ProcessWindowStyle.Normal
        .Verb = "runas" 'add this to prompt for elevation
    End With

    procExecuting = Process.Start(procStartInfo)

请注意,没有办法绕过 UAC 提示。如果启用了 UAC,那么用户必须在某个时候同意海拔高度。

【讨论】:

  • 我用 CMD 对此进行了测试,效果很好!我真不知道你可以启动一个应用程序,然后权限就会转移过来!我什至制作了一个单独的应用程序,可以判断它是否以管理员身份运行。它运行完美!再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 2017-08-23
  • 2011-12-29
  • 2013-05-31
  • 2011-06-10
相关资源
最近更新 更多