强制降低程序使用的UAC权限

发布于 2019-08-13  165 次阅读


这几天一直在玩方舟,但是这模拟器天天要求管理员权限实在有点过分

模拟器都要成"管理员"了

于是乎想要一个简单的方式强制其以普通身份运行

但从stackoverflow获得的回答,都是CMD版本的,很麻烦,不符合我"方便"的需求。

*回答链接 https://stackoverflow.com/questions/37878185/what-does-compat-layer-actually-do

没有轮子,那么我们自己造,说到及时性和方便,那么右键菜单便是不二之选。

Reg文件便可以实现这个功能,但是编辑之后会有几率出现中文乱码*,出于这个原因博主选择相容性比较好的PowerShell脚本

*这个似乎是博主台式电脑的问题,不具有普遍性

PS脚本如下

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }
New-Item -Path "HKLM:\SOFTWARE\Classes\*\shell\forcerunasinvoker"  -ItemType String -Value "以普通用户身份运行"
New-Item -Path "HKLM:\SOFTWARE\Classes\*\shell\forcerunasinvoker\command"  -ItemType String -Value 'cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" "%1""'

Reg文件如下

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\forcerunasinvoker]
@="以普通用户身份运行"

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

结语:国产软件不要管理员权限就要死系列,结果根本不用高权限也能跑,但是为什么要用高权限呢?大概只有他们自己知道了


自语地