如何在C / C++中以编程方式查找"Saved Games"文件夹?



我正在写一个游戏。我计划将保存的内容存储在"已保存的游戏"目录中。

如何以编程方式找到Saved Games文件夹的位置?

它需要在非英语的Windows上工作。像%USERPROFILE%Saved Games这样的黑客不是一种选择。

Saved Games目录可以通过SHGetKnownFolderPath()函数找到,该函数自Windows Vista和Windows Server 2008以来一直可用。

请注意,FOLDERID_SavedGames参数是一个C++引用。替换为&FOLDERID_SavedGames以从C代码调用。

在我能找到的第一个在线MSVC编译器上测试成功:

https://rextester.com/l/cpp_online_compiler_visual

#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#include <stdio.h>
#include <shlobj.h>
#include <objbase.h>
#pragma comment(lib, "shell32.lib")
#pragma comment(lib, "ole32.lib")
int main(void)
{
PWSTR path = NULL;
HRESULT r;
r = SHGetKnownFolderPath(FOLDERID_SavedGames, KF_FLAG_CREATE, NULL, &path);
if (path != NULL)
{
printf("%ls", path);
CoTaskMemFree(path);
}
return 0;
}

最新更新