
1 Cooky 5 天前 %APPDATA% |
2 zliea 5 天前 %APPDATA% +1 |
3 thiiadoewjwe OP @Cooky 感谢回复,刚才简单用 AI 搜了下%APPDATA%,发现它应该还是说把写入的文件放到非 C:\Program Files (x86)目录下,但我的问题 2 是想,下载的文件依然保存在 C:\Program Files (x86)目录下,是否我理解有误,再次感谢 |
4 thiiadoewjwe OP @zliea 感谢回复,刚才简单用 AI 搜了下%APPDATA%,发现它应该还是说把写入的文件放到非 C:\Program Files (x86)目录下,但我的问题 2 是想,下载的文件依然保存在 C:\Program Files (x86)目录下,是否我理解有误,再次感谢 |
5 gadfly3173 5 天前 via Android 你的需求看起来是存档一类的东西,如果你有便携版即用即走的需求,那么你需要读取程序所在目录(也就是你的 Program Files )里的东西,这个需要管理员。%APPDATA%用来放用户维度的配置。你也可以两种同时启用。 |
6 r3a1ex0n0 5 天前 调用 windowsAPI 申请提权, 用户那边弹个 UAC 的框 ,让用户点确认就行了 |
7 thiiadoewjwe OP @gadfly3173 谢谢回复,主要软件现在也比较大了,估计有大几百万行,涉及功能比较多,每个这种写入操作都改下路径和修改配置文件,任务量会有点大,不过目前看来也只能通过%APPDATA%这样了 |
8 thiiadoewjwe OP @r3a1ex0n0 感谢回复,这样的话涉及的功能有点多,并且有点影响用户体验,看来只能说把这些相关文件放到其他位置了 |
9 vfs 5 天前 安装期间通常是由管理员权限的,可以在这个期间修改你产品目录的修改权限。 |
10 thiiadoewjwe OP @vfs 谢谢回复,这个思路可以借鉴下,后期我试试 |
11 woniu7 5 天前 "2.如何能安装到 C:\Program Files (x86)的前提下,可以不开管理员权限,也能进行写入操作呢" 修改 C:\Program Files (x86)的权限,授给当前普通用户写权限。 "不放在 C:\Program Files (x86),而是放到 C 盘其他目录下"的本质就是其他目录有用户权限,如通常的用户目录下的 AppDate ,而 C:\Program Files (x86)一般是管理员安装,给所有用户读/使用,个人的写数据则放在自己的用户目录下,但你硬要给某个用户就修改目录默认权限。 |
12 penisulaS 5 天前 所以现在很多新软件都直接安装到 APPDATA 目录下了,各种方便。 |
13 thiiadoewjwe OP @woniu7 感谢回复,是这样的,所以现在感觉也可以按照 12 楼说的安装时就放到 APPDATA 目录下,直接一劳永逸 |
14 thiiadoewjwe OP @penisulaS 谢谢回复,这个思路很妙,方便问下都有哪些新软件直接安装到 APPDATA 目录下吗,这样可以借鉴,给其他同事说也有参考性 |
15 b821025551b 5 天前 %APPDATA% 是微软的规范,如果不考虑 XP 系统上运行,不要直接在程序安装路径下写入配置,不过要注意: 1 、%APPDATA%是在用户下的,存储的数据在用户之间隔离; 2 、如果需所有用户可读写,需在%ProgramData%创建配置; 3 、%APPDATA%映射的路径是 AppData\Roaming, 如果不需要同步,应用%LOCALAPPDATA%,也就是 AppData\Local |
16 b821025551b 5 天前 @thiiadoewjwe #14 你直接打开这个路径就能看到了,除了 XP 兼容,都这么做。 |
17 penisulaS 5 天前 @thiiadoewjwe 典型的比如微信,或者安装 vscode (或其他能选用户的应用)的时候选择只安装到本用户,就会安装到本用户的%APPDATA% |
18 paopjian 5 天前 写入到文档里应该不要权限吧, 我现在文档里一堆.文件夹缓存, APPDATA/Roaming 也是个存放目录 |
19 visper 5 天前 记得最开始安装 cursor 这些都不给选择直接安装到 app data.麻烦搞得 c 盘不够大。 |
20 tangmanger 5 天前 1.管理员身份安装运行 可以写 2.写到用户目录 可以 3.写入时动态申请管理员权限 开着 UAC 会弹窗 |
21 tangmanger 5 天前 补充下 %APPDATA% 有一个问题 要看看有没有多用户问题 你要是有 windows 多账户问题也要考虑 |
22 polarisc 5 天前 C:\Users\Public\Documents 这个目录随便读写 |
23 forgottencoast 5 天前 |
24 Naykcin 5 天前 ``` 现象:软件默认安装到 C:\Program Files (x86),当软件运行时,进行一些写入操作时(比如从云端下载资源到本地,目前也是默认下载到 C:\Program Files (x86)下我的安装目录中),会失败 ``` 这必然是会失败的,因为这种操作有悖于系统信息安全设计理念。如果 [普通权限用户] 具备向`C:`或`C:\Program Files (x86)`的写权限,会导致提权漏洞,比如以普通用户权限可以替换一些关键的.dll ,使某些默认以管理员运行的进程在启动时被劫持,从而使攻击者获取管理员权限。因此默认情况下普通用户并不具备对这些根目录的写权限,只允许读权限。 最优解是使用 %APPDATA%。 |
25 b821025551b 5 天前 你这个附言气死我了,有没有看我的回帖啊; Program Files 是程序安装路径,这个没问题; AppData 是用户配置文件,这个也没问题; ProgramData ,这个是重点,是全局的配置文件,相当于跨用户的 AppData ,并且可以与 AppData 共存。 |
26 Esec 5 天前 via Android 以前很多程序也选择拉到注册表里,有几个表不需要权限,缺点一样是全局可读,不适合明文存密码,且没法跨平台移植,大部分人没有精到专门备份这玩意做差分分析。更邪门一点的每次启动都拿机器码到远端拉配置,临时放内存里 |
28 thiiadoewjwe OP @b821025551b 这次明白了老哥/捂脸,感谢指正补充,上午以为是和 APPDATA 一个意思,再次感谢! |
29 Koell 5 天前 说到这个,新版 Windows 11 多了一个管理员保护功能( https://techcommunity.microsoft.com/blog/windows-itpro-blog/administrator-protection-on-windows-11/4303482 ) 如果使用管理员运行的话,%appdata% 会变成 “用户名_ADMIN” 的格式。 已经碰到好几个软件由于: 1.更新程序使用了管理员权限 2.更新完后自动运行程序被动使用了管理员权限运行 3.使用了管理员运行之后 %appdata% 变为 用户名_ADMIN 导致运行的程序变为空白配置,还要我退出再使用普通权限运行一下。 |