从win7的命令行开始,如何以管理员身份升级UAC启动进程

时间:2012-07-16 18:40:06

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

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

2 个答案:

答案 0 :(得分:0)

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

elevate似乎正在运作,正在调用

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

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

答案 1 :(得分:0)

这很难,微软没有提供任何实用工具(主要是因为提供能力破坏安全性的批处理文件),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附带的工具的唯一方式。