C ++获取其他用户的appdatapath

在我的程序中,我一直使用SHGetFolderPath来获取AppDatapath。 但是我需要获取计算机上其他用户的AppDatapath。 我能想到的唯一方法是获取当前用户的path,然后用其他用户名replace当前用户的名称。 我不知道如何获得用户列表。 有可能是一个更优雅的解决scheme,如果你有洞察力,我将不胜感激。

对于你的情况,我会建议如下:

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

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

我知道从其他用户配置文件中收集所有数据的方式并不是一个好方法。 没有任何Microsoft支持,这是(我知道!)。

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