强制程序在没有管理员权限或 UAC 的情况下运行?

强制程序在没有管理员权限或 UAC 的情况下运行?

有什么方法可以强制通常需要管理员权限(通过 UAC)的程序在没有管理员权限的情况下运行?(即没有 UAC 提示和没有系统范围的访问权限

添加:无需修改可执行文件本身。


尽管詹姆斯的回答,我还是找到了一些方法几乎做完了:

  1. 通过修改可执行文件,我可以trustInfo从清单中删除条目(或完全删除清单,这样我就可以使用外部条目),从而允许程序在没有 UAC 的情况下启动。不幸的是,这会修改可执行文件,因此由于内部校验和测试,它会在不久后退出。
  2. 通过使用 Process Explorer,我可以以受限用户身份启动它。但是,这似乎对它的限制比我想要的要多得多(它像受保护模式 IE 一样运行,因此可以访问的内容比我的标准未提升用户所能访问的内容少得多)。

答案1

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="Run without privilege elevation"

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker\command]
@="cmd /min /C \"set __COMPAT_LAYER=RUNASINVOKER && start \"\" \"%1\"\""

保存此文本<name_of_file>.reg并将其添加到 Windows 注册表中。(双击它就可以了。)

之后,右键单击您想要以非管理权限运行的应用程序,并选择“以非权限提升运行”。

在某些情况下 - 少量 0.1% 的程序可能会询问两次有关 UAC 提示。

答案2

存到nonadmin.bat

cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %1"

现在,您可以将程序拖放至此处,无需管理员权限即可运行它们。

这不需要管理员权限,因为更改注册表项需要管理员权限。此外,您也不会弄乱上下文菜单。

根据 Vom 的回答


更新:现在应该也可以与名称中带有空格的程序一起使用。

答案3

我希望我没有迟到,但是我在寻找一个类似的问题,却没有看到答案,我发现RunAs当以管理员身份运行时,Windows 的内置命令可以使用/trustlevelswitch 执行此操作。

RUNAS /trustlevel:<TrustLevel> program

/showtrustlevels  displays the trust levels that can be used
                  as arguments to /trustlevel.
/trustlevel       <Level> should be one of levels enumerated
                  in /showtrustlevels.

对我来说,这种方法很管用。讽刺的是,在没有提升权限的情况下明确启动一个程序需要提升的命令提示符。去想象吧。:) 我希望这对你有帮助。

答案4

exe如果它是一个需要管理权限的安装文件,那么有一个技巧可以在没有提升访问权限的情况下运行它:

如果文件的名称包含类似的单词setupinstallWindows 会强制以提升的访问权限运行它,即使它不需要提升的访问权限:

在此处输入图片描述

如果 .exe 文件中包含清单,则这些提升启发式方法不适用。

例如,如果清单表明 exe 不需要提升,即使在文件名中包含任何这些词都不会使其以提升的形式运行。

另一个关键字patch如下姆加默兹在评论中。

UAC(用户帐户控制)文档中记录了这一点:

安装程序检测可检测安装文件,有助于防止在未经用户知情和同意的情况下运行安装。

安装程序检测仅适用于:

  • 32 位可执行文件。

  • 没有请求的执行级别属性的应用程序。

  • 以启用 UAC 的标准用户身份运行的交互式进程。

在创建 32 位进程之前,将检查以下属性以确定它是否是安装程序:

  • 文件名包含“安装”、“设置”或“更新”等关键字。

  • ...

阅读模式在这里:https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

相关内容