在 windows 下有没有什么办法让带有 UAC 盾标的程序以非管理员身份运行?

2020-04-23 23:41:30 +08:00
 fujrkx

现在 windows 下管理员权限有被滥用的趋势,很多程序安装时只是解压文件,不需要创建服务,修改驱动等,使用时也不涉及系统底层的操作,可以说是全程都不需要管理员权限,可是却在编译时就加上了 UAC 运行级别。还有一些程序比如一些软件下载网站上下载到的智能下载器,它也是添加了 UAC 运行级别,强迫以管理员身份运行,然后顺便安装一堆流氓软件。这些程序要么以管理员身份运行,然后被它恶心一下,要么无法运行。 那么有没有什么办法让那些带有 UAC 盾标的程序以非管理员身份运行?

PS:顺便吐槽一下,其实 windows 操作系统会根据程序的需要强迫用户以管理员身份运行该程序,这种设计有点为虎作伥的感觉。

5302 次点击
所在节点    程序员
35 条回复
sleepm
2020-04-24 11:47:04 +08:00
你可以试试用 7zip 解压安装文件,然后运行里面的可执行文件
我试了百度云是可以正常运行的
流氓软件要区别对待,要么不装,要么扔虚拟机或者沙盒里
Jirajine
2020-04-24 12:07:51 +08:00
对我来说虚拟机还是首选,这种方式的隔离程度不足,既不能保证卸载的干净,也不能保证数据卷不被读取。
当然还有一种方法,在虚拟机里用管理员权限安装,手动分析并“绿化”,然后打包成 appx 自签名后安装。
mainjzb
2020-04-24 12:16:56 +08:00
这个背锅人应该是微软。因为系统设计的太乱。
我是做游戏相关的产业。见过太多太多的人,莫名其妙的把游戏文件放在一些只读的或者权限不足的文件夹里。游戏启动各种报错。直接程序设定管理员启动完事大吉。这些小白用户根本就啥都不懂。也不会弄。
May725
2020-04-24 13:04:47 +08:00
昨天就遇到类似的问题, 我编译一个读写文件的 exe,发现加了自动加了盾牌,后来才查到 由于名称中含有 update 字样,自动加了请求管理员权限, “Installer Detection Technology”,很迷惑的操作。
laqow
2020-04-24 13:07:00 +08:00
if NOT EXIST "%~1" (
goto EOF
)

:start
call:CHECK "%~1"
if (%return%)==(true) (
cmd /min /C "set __COMPAT_LAYER=RUNASINVOKER && start "" %~1"
)

:CHECK
set "return=false"
if ("%~x1")==(".exe") set return=true
goto :EOF
shansing
2020-04-24 13:56:58 +08:00
@szzhiyang 你这么说完全不会有错。但是当预料功能是让 TaobaoProtect.exe 自启并常驻后台时,我宁愿不要。
@Jirajine 如果你使用多用户(“以其他身份运行”),并恰当配置 NTFS 卷相应目录的 ACL (或者干脆就利用现有配置,比如将重要数据放到用户目录),Windows 会帮你阻止隔离程序访问敏感数据的。
redeemer1001
2020-04-24 13:58:25 +08:00
@fujrkx #13 我没说它流氓,我说它贱😁
illl
2020-04-24 14:03:58 +08:00
这是想 bypass 啊
crella
2020-04-24 14:27:06 +08:00
windows 上,虽然把在“启动”目录添加程序的快捷方式也可以让程序开机启动,但是大多数非必要程序都是添加到系统服务或者添加到任务计划,而后两者是要管理员权限的,一般用户不用 360 等软件也删不掉这个开机启动。

还是要恰饭啊,windows 上非行业用的桌面软件好像是挺难赚钱的,所以才一个个加开机启动或设置浏览器首页。
crella
2020-04-24 14:30:46 +08:00
@shansing 我现在把敏感数据放 vhd 了,系统是 win7,要用到的时候就双击一下 bat 脚本挂载它。

不过 7z 和某些 winPE 常用软件可以直接解压 vhd
LokiSharp
2020-04-24 14:41:07 +08:00
可以按需申请,但是大多数人都不这么干
shansing
2020-04-24 14:43:01 +08:00
@crella 你忽略了注册表,注册表才是最常用来注册启动项的方式。添加启动项并不一定需要管理员权限。只要在注册表 `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run` 添加项即可。由于 HKEY_CURRENT_USER 是当前用户相关,并不需要进行提权;我刚试了 reg 命令,和某飞机,添加项时并不提示需要管理员权限。相对于添加注册表项,注册服务或者添加计划任务显得像是“滥用”。
crazykylin
2020-04-24 18:12:35 +08:00
https://github.com/xyx0826/AsInvoker
你是说这种的降权?
g00001
2020-04-24 18:54:48 +08:00
可以写个小程序自动清除 EXE 文件的管理权限,几句代码就可以了,用 aardio 写了个例子:

import fsys.res;

//读取 manifest
var exePath = "C:\Users\g00001\Desktop\test.exe";
module = ::Kernel32.LoadLibraryExP(exePath,,2)
var manifestData = fsys.res.loadRes(1,24,path);
::Kernel32.FreeLibrary(module);

//清除管理权限
manifestData = ..string.replace(manifestData
,"\<requestedPrivileges\>.+?\<\/requestedPrivileges\>"
,`<requestedPrivileges><requestedExecutionLevel level="asInvoker" uiAccess="false" /></requestedPrivileges>`)

//更新 EXE
var resFile = fsys.res.open( exePath )
resFile.update(24,1,manifestData,0 )
resFile.close();


运行一下 UAC 图标就没有了。

如果要界面也简单,也要不了几句代码:



把 EXE 往里一拖,UAC 图标就没了。
wxch111vv
2020-04-25 02:00:07 +08:00
所以我能在 scoop 上安装就用 scoop

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/665508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX