从win7上的命令行,我如何以管理员身份使用提升的UAC启动进程



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

查看此处:https://superuser.com/a/269750/139371

提升似乎在起作用,呼叫

C:Utilsbin.x86-64elevate.exe -k dir

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

这很难,微软没有提供任何实用程序来做到这一点(主要是因为提供一个具有此功能的批处理文件会破坏安全性),除了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附带的工具的方法。

相关内容

最新更新