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