推荐的应用程序解决方案,允许应用程序具有可由同一台计算机的多个用户共享的设置文件

时间:2013-12-27 11:53:45

标签: windows visual-studio-2010 visual-c++ windows-7 system-administration

我目前正在开发一个项目,我的应用程序会生成一些设置文件(在programfiles(x86)文件夹中),这些文件将被其他应用程序进一步使用。现在,我甚至希望我的软件的非管理用户使用在programfiles(x86)文件夹中生成设置文件的功能。我正在使用C ++来创建我的应用程序。

那么,我们是否有c ++功能,甚至非管理员也可以在ProgramFiles(x86)文件夹中创建一个设置文件。

微软处理此类情况的方式是什么?

有人可以指导我解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:2)

每台机器配置数据应存储在FOLDERID_ProgramData引用的位置的子文件夹中。

根据您使用的操作系统版本,位置可能会发生变化。它也可以本地化(文件夹名称因系统语言而异)。它也可以由系统管理员更改。

因此,不要将文件夹名称硬编码到应用程序中非常重要。相反,您使用Known Folders APIs。致电SHGetKnownFolderPath,传递其中一个KNOWNFOLDERID值。

This MSDN blog post解释了在各种情况下使用的已知文件夹。

PWSTR path = nullptr;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_ProgramData, 0, NULL, &path);
if (FAILED(hr)) {
    // error handling
}

// use the path

// when you are done, you must free the memory yourself:
CoTaskMemFree(path);