批处理文件:删除提升的权限(以原始用户身份运行命令)

Posted

技术标签:

【中文标题】批处理文件:删除提升的权限(以原始用户身份运行命令)【英文标题】:Batch file: Drop elevated privileges (run a command as original user) 【发布时间】:2013-12-11 15:43:15 【问题描述】:

我有一个以提升权限开始的批处理文件(我的安装程序生成它),但在某个时候,我需要以启动我的安装程序的原始用户身份运行命令(即从提升的权限中删除)。

可以吗?

【问题讨论】:

【参考方案1】:

您可以通过以下方式运行具有受限权限的命令:

runas /trustlevel:0x20000 "YourCommandHere"

您应该提供命令的绝对路径,包括双引号中的任何参数作为runas 的参数。

如果您想以受限权限运行多个命令,可以将它们放在单独的批处理文件中并使用以下命令运行:

runas /trustlevel:0x20000 "cmd /C PathToYourBatchFile"

无论如何,这将打开一个具有受限权限的新控制台。当您希望以受限权限运行内部命令(如copydel 等)时,您还必须使用此语法,因为这些命令由命令行解释器提供,并且没有关联的路径。

注意0x20000 是标准用户的信任级别。您可以通过运行列出其他可用的信任级别

runas /showtrustlevels

【讨论】:

嗯,这似乎与我预期的行为略有不同。正常运行cmd.exe,标题栏只显示C:\Windows\System32\cmd.exe,以提升权限运行,显示Administrator: C:\Windows\System32\cmd.exe,以runas /trustlevel:0x20000 cmd.exe开头,显示Administrator: cmd (running as sashoalm-PC\sashoalm with restricted privileges)。如您所见,它与正常运行不同,在“以原始用户身份运行”的意义上,您知道可能有什么不同吗? @sashoalm 新控制台仍与管理员帐户相关联,但它以标准用户的权限运行(即使您的用户帐户具有管理员权限)。要以原始用户身份运行,请查看 runas 的其他选项。 进程浏览器将两个进程都列为用户名sashoalm-PC\sashoalm。我的用户帐户是管理员帐户。那么如果用户名相同,权限相同,为什么cmd的标题栏会报不同呢? 嗯,Windows 允许同一个用户运行具有不同可信度级别的不同应用程序。这在这里解释:msdn.microsoft.com/en-us/library/bb625957.aspx 不知何故这对我不起作用。我得到RUNAS ERROR: Unable to run - cmd 1168: Element not found. 即使我给出了 cmd 的完整路径,它也会显示相同的错误。使用/user:<username>时有效,但是我必须输入PW。【参考方案2】:

1。 使用这个命令,它仍然是任务管理器中的特权程序(即使它受到限制):

runas /trustlevel:0x20000 <cmd>

2。 您可以尝试其他方式,这将使其在任务管理器中没有特权:

runas /savecred /user:%username% <cmd>

您仍然需要输入一次密码,但不是每次都输入。

3。 使用 explorer.exe 启动程序:

explorer.exe <cmd>

exploere.exe 不接受 cmd 参数,如果需要参数,您可以创建一个临时脚本文件并通过 explorer.exe 启动它。

【讨论】:

以上是关于批处理文件:删除提升的权限(以原始用户身份运行命令)的主要内容,如果未能解决你的问题,请参考以下文章

以不同用户身份运行代码以获得提升的权限

Delphi 以不同的用户身份运行

用于检查应用程序是不是以提升的权限运行的 PowerShell 命令

linux怎么提升root权限啊?用su和sudo 也不行啊?

Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。

win10激活时(管理员权限运行)报 0x80070005 拒绝访问:所请求的操作需要提升