C ++获取其他用户的appdata路径

时间:2011-08-04 19:00:43

标签: c++ windows

在我的程序中,我一直使用SHGetFolderPath来获取AppData路径。但是,我需要获取计算机上其他用户的AppData路径。我能想到的唯一方法是获取当前用户的路径,然后用其他用户名替换当前用户的名称。我不知道如何获得用户列表。可能还有一个更优雅的解决方案......如果你有洞察力,我会非常感激。

1 个答案:

答案 0 :(得分:1)

根据您的情况,我建议如下:

  1. 继续在AppData中存储配置文件,但将其存储在CSIDL_COMMON_APPDATA(SHGetFolderPath)中。此AppData与所有用户共享。您的安装程序(或管理员用户)可以在此位置设置一个文件夹,该文件夹以您的程序命名,为“Everyone”提供完全访问权限(使用Windows Installer非常容易)。这样,任何用户都可以读/写它。 “程序文件”中的所有内容都不应该更改。它应该只包含只读可执行文件,DLL和其他此类资源。微软长期以来不鼓励写这个位置,许多管理员不再期望遇到需要定期备份的自定义用户数据。在程序文件中恢复。

  2. 当您的软件运行时,您可以检查当前用户的AppData中的数据(即由旧版本存储)并将其与机器的AppData中的数据合并(由上面的#1描述)。要为用户迁移数据,请以该用户身份登录并运行您的软件。

  3. 我知道从其他用户配置文件中收集所有数据的方法确实不是很好。没有任何东西支持,即(我知道!)。

    关于在程序文件中存储数据:http://msdn.microsoft.com/en-us/library/bb776776(VS.85).aspx“不要将用户数据存储在Program Files文件夹下。”还有许多其他类似的参考文献。