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