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

sas*_*alm 12 batch-file elevated-privileges

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

有可能这样做吗?

GOT*_*O 0 15

您可以使用以下限制权限运行命令:

runas /trustlevel:0x20000 "YourCommandHere"
Run Code Online (Sandbox Code Playgroud)

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

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

runas /trustlevel:0x20000 "cmd /C PathToYourBatchFile"
Run Code Online (Sandbox Code Playgroud)

无论如何,这将打开一个具有受限权限的新控制台.您还可以,只要你想使用受限特权运行的内部命令(如使用此语法copy,del等等),因为这些是由命令行解释器提供不具有关联的路径.

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

runas /showtrustlevels
Run Code Online (Sandbox Code Playgroud)


小智 8

  1. 通过使用以下命令,它仍然是任务管理器中的特权程序(尽管受到限制):

    runas /trustlevel:0x20000 <cmd>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 您可以尝试其他方法,这将使其在任务管理器中没有特权:

    runas /savecred /user:%username% <cmd>
    
    Run Code Online (Sandbox Code Playgroud)

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

  3. 用于explorer.exe启动程序:

    explorer.exe <cmd>
    
    Run Code Online (Sandbox Code Playgroud)

    explorer.exe不会接受 的参数cmd,但您可以创建一个临时脚本文件,并在explorer.exe需要参数时启动它。