windows 开发,软件在 C 盘,是否可以绕过管理员权限来进行写入

28 天前
 thiiadoewjwe
技术栈:C++,MFC

现象:软件默认安装到 C:\Program Files (x86),当软件运行时,进行一些写入操作时(比如从云端下载资源到本地,目前也是默认下载到 C:\Program Files (x86)下我的安装目录中),会失败

目前解决方案:1.以管理员权限运行 2.软件一开始就安装到非 C 盘

通过 AI 得到的方案:程序安装到 C:\Program Files (x86),但进行需要进行写入操作的相关文件夹,不放在 C:\Program Files (x86),而是放到 C 盘其他目录下

问题:1.AI 的回答是否可行 2.如何能安装到 C:\Program Files (x86)的前提下,可以不开管理员权限,也能进行写入操作呢
3121 次点击
所在节点    Windows
29 条回复
tangmanger
28 天前
补充下 %APPDATA% 有一个问题 要看看有没有多用户问题 你要是有 windows 多账户问题也要考虑
polarisc
28 天前
C:\Users\Public\Documents 这个目录随便读写
forgottencoast
28 天前
@thiiadoewjwe
我下载到的只要是正经公司开发的软件,近几年都是可以放在%APPDATA%目录下的。
很多下载的时候分开下载,放在系统目录和放在用户目录分开。
有些是在安装的时候询问。
Naykcin
28 天前
```
现象:软件默认安装到 C:\Program Files (x86),当软件运行时,进行一些写入操作时(比如从云端下载资源到本地,目前也是默认下载到 C:\Program Files (x86)下我的安装目录中),会失败
```

这必然是会失败的,因为这种操作有悖于系统信息安全设计理念。如果 [普通权限用户] 具备向`C:`或`C:\Program Files (x86)`的写权限,会导致提权漏洞,比如以普通用户权限可以替换一些关键的.dll ,使某些默认以管理员运行的进程在启动时被劫持,从而使攻击者获取管理员权限。因此默认情况下普通用户并不具备对这些根目录的写权限,只允许读权限。

最优解是使用 %APPDATA%。
b821025551b
28 天前
你这个附言气死我了,有没有看我的回帖啊;
Program Files 是程序安装路径,这个没问题;
AppData 是用户配置文件,这个也没问题;
ProgramData ,这个是重点,是全局的配置文件,相当于跨用户的 AppData ,并且可以与 AppData 共存。
Esec
28 天前
以前很多程序也选择拉到注册表里,有几个表不需要权限,缺点一样是全局可读,不适合明文存密码,且没法跨平台移植,大部分人没有精到专门备份这玩意做差分分析。更邪门一点的每次启动都拿机器码到远端拉配置,临时放内存里
busier
28 天前
@Esec 注册表 HKCU 也是用户隔离的。除非你给所有用户都授权管理员!
thiiadoewjwe
28 天前
@b821025551b 这次明白了老哥/捂脸,感谢指正补充,上午以为是和 APPDATA 一个意思,再次感谢!
Koell
28 天前
说到这个,新版 Windows 11 多了一个管理员保护功能( https://techcommunity.microsoft.com/blog/windows-itpro-blog/administrator-protection-on-windows-11/4303482

如果使用管理员运行的话,%appdata% 会变成 “用户名_ADMIN” 的格式。

已经碰到好几个软件由于:

1.更新程序使用了管理员权限

2.更新完后自动运行程序被动使用了管理员权限运行

3.使用了管理员运行之后 %appdata% 变为 用户名_ADMIN

导致运行的程序变为空白配置,还要我退出再使用普通权限运行一下。

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

https://ex.noerr.eu.org/t/1173412

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

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

© 2021 V2EX