【问题标题】:From command line on win7, how do I launch a process as administrator with elevated UAC从win7上的命令行,如何使用提升的UAC以管理员身份启动进程
【发布时间】:2012-07-15 15:57:56
【问题描述】:

我有一个需要管理权限的程序,我想从批处理文件运行该程序。我可以从命令行运行什么命令将以管理权限运行我的程序?我同意弹出窗口请求许可。此外,该文件需要能够从计算机上的任何位置运行,以便从 ./src 运行其他文件。问题是,如果我右键单击并选择“以管理员身份运行”,它会更改我的当前目录,因此 ./src 不再有效。如果我在我的机器上禁用 UAC,那么一切运行正常。谢谢!

【问题讨论】:

标签: command-line process batch-file admin uac


【解决方案1】:

看这里:https://superuser.com/a/269750/139371

elevate 似乎在工作,正在调用

C:\Utils\bin.x86-64\elevate.exe -k dir

在调用elevate 的“当前目录”中执行dir

【讨论】:

    【解决方案2】:

    这很难,Microsoft 没有提供任何实用程序来执行此操作(主要是因为给批处理文件提供了该功能会破坏安全性),除了 RunAs,并且需要激活管理员帐户。

    有一个 JScript 程序可以做类似的事情,通过使用 SendKeys 打开开始菜单并键入 cmd[CTL]+[SHIFT]+[ENTER] 将启动命令行 shell。

    将以下内容另存为 .js 文件,例如 StartAdmin.js:

    var WshShell = WScript.CreateObject("WScript.Shell");
    WshShell.SendKeys("^{esc}cmd^+{ENTER}");   The equivilent of [CTRL]+[ESC] cmd [CTRL]+[SHIFT]+[ENTER]
    

    要从批处理文件运行 StartAdmin.js,您需要以下行:

    wscript StartAdmin.js
    

    要从特定目录启动并启动批处理文件,请将 StartAdmin.js 中的第 2 行更改为:

    WshShell.SendKeys("^{esc}cmd /C "cd %userprofile% & batchfile.bat"^+{ENTER}");
    

    /C 开关告诉它运行命令,然后关闭命令行窗口。
    /K 将在退出批处理文件后使命令窗口保持打开状态。
    为了帮助您理解 SendKeys 命令:

    +=[Shift Key]
    ^=[Control Key]
    {esc}=[Escape Key]
    {enter}=[Enter Key]
    

    要了解有关使用 CMD.EXE 的更多信息,请键入 CMD /?在命令提示符下。

    这是一种非常不整洁和丑陋的方法,但这是我知道如何仅使用 Windows 附带的工具的唯一方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 2014-04-26
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多