![Windows 上不同用户使用不同的符号链接](https://linux22.com/image/1541631/Windows%20%E4%B8%8A%E4%B8%8D%E5%90%8C%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5.png)
我有一个应用程序将其数据保存在 上C:\ProgramData
。这意味着对于所有用户,它都使用相同的数据。我想实现一种方法,以便不同的用户可以拥有自己独立的数据空间。我已使用符号链接(文件夹连接)将其创建到%userprofile%\Documents\AppFolder
,并且该方法在我的用户配置文件上运行良好,但是当尝试使用不同的用户时,应用程序无法运行;因为它试图访问C:\User\User1\Documents\AppFolder
,而用户 2 无权访问 。有任何可能的解决方法,以便不同的用户可以链接到不同的符号链接吗?
答案1
您可以使用该subst
命令将驱动器号映射到您的用户目录。创建的驱动器号subst
是每个用户独有的,因此您可以创建与每个用户相同的映射,然后创建指向该驱动器号的符号链接。或者只需通过其设置将程序指向映射的驱动器即可。
一个例子:
subst v: %userprofile%
mklink /d c:\ProgramData\AppFolder v:\Documents\AppForder
该解决方案的缺点是映射的驱动器号不是持久的,因此您必须在每次用户登录时重新创建它们(例如,通过将命令的快捷方式subst
放入%appdata%\Microsoft\Windows\Start Menu\Programs\Startup
。或者您可以创建一个将运行的批处理文件subst
,然后运行您的程序。
另一种解决方案是在沙箱中运行你的程序(例如沙盒)。如果程序尝试执行某些低级操作(例如安装驱动程序或服务),则此方法无效。此外,每次运行后,您都必须从沙盒中恢复程序创建的文件,以便在其他地方使用它们。