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

1 天前
 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)的前提下,可以不开管理员权限,也能进行写入操作呢
2396 次点击
所在节点    Windows
29 条回复
Cooky
1 天前
%APPDATA%
zliea
1 天前
%APPDATA% +1
thiiadoewjwe
1 天前
@Cooky 感谢回复,刚才简单用 AI 搜了下%APPDATA%,发现它应该还是说把写入的文件放到非 C:\Program Files (x86)目录下,但我的问题 2 是想,下载的文件依然保存在 C:\Program Files (x86)目录下,是否我理解有误,再次感谢
thiiadoewjwe
1 天前
@zliea 感谢回复,刚才简单用 AI 搜了下%APPDATA%,发现它应该还是说把写入的文件放到非 C:\Program Files (x86)目录下,但我的问题 2 是想,下载的文件依然保存在 C:\Program Files (x86)目录下,是否我理解有误,再次感谢
gadfly3173
1 天前
你的需求看起来是存档一类的东西,如果你有便携版即用即走的需求,那么你需要读取程序所在目录(也就是你的 Program Files )里的东西,这个需要管理员。%APPDATA%用来放用户维度的配置。你也可以两种同时启用。
r3a1ex0n0
1 天前
调用 windowsAPI 申请提权, 用户那边弹个 UAC 的框 ,让用户点确认就行了
thiiadoewjwe
1 天前
@gadfly3173 谢谢回复,主要软件现在也比较大了,估计有大几百万行,涉及功能比较多,每个这种写入操作都改下路径和修改配置文件,任务量会有点大,不过目前看来也只能通过%APPDATA%这样了
thiiadoewjwe
1 天前
@r3a1ex0n0 感谢回复,这样的话涉及的功能有点多,并且有点影响用户体验,看来只能说把这些相关文件放到其他位置了
vfs
1 天前
安装期间通常是由管理员权限的,可以在这个期间修改你产品目录的修改权限。
thiiadoewjwe
1 天前
@vfs 谢谢回复,这个思路可以借鉴下,后期我试试
woniu7
1 天前
"2.如何能安装到 C:\Program Files (x86)的前提下,可以不开管理员权限,也能进行写入操作呢"
修改 C:\Program Files (x86)的权限,授给当前普通用户写权限。

"不放在 C:\Program Files (x86),而是放到 C 盘其他目录下"的本质就是其他目录有用户权限,如通常的用户目录下的 AppDate ,而 C:\Program Files (x86)一般是管理员安装,给所有用户读/使用,个人的写数据则放在自己的用户目录下,但你硬要给某个用户就修改目录默认权限。
penisulaS
1 天前
所以现在很多新软件都直接安装到 APPDATA 目录下了,各种方便。
thiiadoewjwe
1 天前
@woniu7 感谢回复,是这样的,所以现在感觉也可以按照 12 楼说的安装时就放到 APPDATA 目录下,直接一劳永逸
thiiadoewjwe
1 天前
@penisulaS 谢谢回复,这个思路很妙,方便问下都有哪些新软件直接安装到 APPDATA 目录下吗,这样可以借鉴,给其他同事说也有参考性
b821025551b
1 天前
%APPDATA% 是微软的规范,如果不考虑 XP 系统上运行,不要直接在程序安装路径下写入配置,不过要注意:
1 、%APPDATA%是在用户下的,存储的数据在用户之间隔离;
2 、如果需所有用户可读写,需在%ProgramData%创建配置;
3 、%APPDATA%映射的路径是 AppData\Roaming, 如果不需要同步,应用%LOCALAPPDATA%,也就是 AppData\Local
b821025551b
1 天前
@thiiadoewjwe #14 你直接打开这个路径就能看到了,除了 XP 兼容,都这么做。
penisulaS
1 天前
@thiiadoewjwe 典型的比如微信,或者安装 vscode (或其他能选用户的应用)的时候选择只安装到本用户,就会安装到本用户的%APPDATA%
paopjian
1 天前
写入到文档里应该不要权限吧, 我现在文档里一堆.文件夹缓存, APPDATA/Roaming 也是个存放目录
visper
1 天前
记得最开始安装 cursor 这些都不给选择直接安装到 app data.麻烦搞得 c 盘不够大。
tangmanger
1 天前
1.管理员身份安装运行 可以写
2.写到用户目录 可以
3.写入时动态申请管理员权限 开着 UAC 会弹窗

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

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

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

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

© 2021 V2EX