V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Biwood
V2EX  ›  Windows

Windows 多用户之间如何共享软件设置数据 (AppData) ?

  •  
  •   Biwood · 2022-08-07 11:54:57 +08:00 · 2490 次点击
    这是一个创建于 622 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的 Windows10 现在有两个用户,用户 A 和用户 B ,用户 A 是管理员账户,安装了一些软件可以多用户共用。用户 B 是普通账户,虽然可以直接打开用户 A 安装的软件,但是设置都是全新的。我查了下,用户 A 的应用设置数据应该都在 C:\Users\UserA\AppData\Local 这个目录下,请问有什么策略可以把这里的数据直接共享给其他用户吗?

    12 条回复    2022-08-08 09:16:37 +08:00
    singerll
        1
    singerll  
       2022-08-07 12:56:53 +08:00 via Android
    把软件装到非 user 文件夹
    codehz
        2
    codehz  
       2022-08-07 13:08:26 +08:00 via iPhone
    你要用来隔离就不能这样用,不然普通用户可以一键获得管理员用户的权限)
    Biwood
        3
    Biwood  
    OP
       2022-08-07 13:50:45 +08:00
    @singerll 安装位置一般是 C:\Program Files 目录,这个是没问题的,主要是配置数据默认被隔离了

    @codehz 当然,也不是让其他人直接访问管理员的数据,而是提供一个公共访问的根目录,类似 Linux 中的 /etc 或者 /usr/share
    codehz
        4
    codehz  
       2022-08-07 14:05:04 +08:00 via iPhone
    @Biwood 程序自己决定写到 appdata 的话基本没啥官方方法去让他写别的地方,可以考虑用 portable 版
    h404bi
        5
    h404bi  
       2022-08-07 14:07:25 +08:00
    你想共享的这些数据是 immutable 的还是 B 可写的,如果是可写的这样用有风险,B 可以写入危险数据让管理员 A 进行交互。如果是 immutable 的,安装时把共享的数据放在 %ProgramData% 下就行,不过这取决于软件对这个的支持。
    Biwood
        6
    Biwood  
    OP
       2022-08-07 14:08:12 +08:00
    @codehz 嗯,目前有部分用 portable 版可以正常用,其他的得去找找官方有没有提供,实在不行只能手动复制一份 AppData 过去了
    mcone
        7
    mcone  
       2022-08-07 14:28:26 +08:00
    管理员把对应的 appdata 给 mklink 出去,再 mklink 给对应的用户名下就行了

    不过这样做风险其实挺大的,除非两个用户都是你在用……
    codehz
        8
    codehz  
       2022-08-07 17:38:48 +08:00 via iPhone
    (考虑到某些程序可能是读取环境变量的,所以可以考虑修改环境变量 appdata localappdata 来实现,还不行就得 hook 了(
    hez2010
        9
    hez2010  
       2022-08-07 23:49:58 +08:00 via Android
    全局的程序数据在 C:\ProgramData 这个隐藏文件夹里
    aflynoob
        10
    aflynoob  
       2022-08-08 00:05:57 +08:00 via iPhone
    用软连接映射到 onedrive 。只不过配置时候用不同的用户目录而已,onedrive 记得别放用户目录里了。
    cnbatch
        11
    cnbatch  
       2022-08-08 02:15:24 +08:00
    C:\Users\Public 这个文件夹内的目录及其子目录,是所有用户都能使用的,有写权限。
    基于此,有个思路也许可以试试,可以避免 mklink 到管理员的账户文件夹,但又能大家一起用。

    首先,在 Public 文件夹内创建一个新目录,例如叫做 C:\Users\Public\NewData 。
    接着,把软件在 AppData\Local 的数据文件夹剪切到它里面去。假设原数据是在 C:\Users\UserA\AppData\Local\SoftwareData ,那就把 SoftwareData 转移到 NewData 那里,变成 C:\Users\Public\NewData\SoftwareData 。
    然后使用 mklink ,把 C:\Users\Public\NewData\SoftwareData 软链接到各个用户的 AppData\Local 里面去。

    这样一来,大家都可以共享软件数据,但又能继续隔离权限。
    nothingistrue
        12
    nothingistrue  
       2022-08-08 09:16:37 +08:00
    shell:Common AppData , %ProgramData% , 即 C:\ProgramData ,是放共享程序文件的目录
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2631 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:58 · PVG 18:58 · LAX 03:58 · JFK 06:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.