2

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

4

2 回答 2

0

这很困难,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 附带的工具的唯一方法。

于 2012-07-17T06:25:05.610 回答
0

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

提升似乎正在工作,打电话

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

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

于 2012-07-16T21:34:38.983 回答