我正在为游戏制作一个单人作弊游戏,并计划将其公开。我已经编写了API,并且一切正常,但是我想将用户输入的数据保存到.ini文件中,因此除非凭据更改,否则他们只需登录一次。我已经做到了,它可以使用相对路径C:\Users\Name\Documents\Cheat\Authorise.ini
进行工作,尽管检查结果时,似乎并没有保存或读取文件中的数据。
我想知道是否有更好的方法来获取文档目录。
功能:
std::string authFile = "C:\\Users\\%USERNAME%\\Documents\\Cheats\\Authorise.ini";
std::string username = GUI::Files::ReadStringFromIni(authFile, "Login", "Username");
std::string password = GUI::Files::ReadStringFromIni(authFile, "Login", "Password");`
答案 0 :(得分:1)
由于您使用的是Windows,因此应在名为<ShlObj.h>
的{{1}}中使用可用于此目的的Windows API调用。请注意,您最好为此使用SHGetKnownFolderPath
,因为std::wstring
的变体没有接受MBCS或ANSI字符串。另外,这将使您获得用户个人资料目录的完整路径,而不仅仅是用户名。
SHGetKnownFolderPath
此外,一旦完成PWSTR path;
SHGetKnownFolderPath(FOLDERID_Documents, KF_FLAG_DEFAULT, NULL, &path);
std::wstring strpath(path);
CoTaskMemFree(path);
的使用,请通过path
释放它。
答案 1 :(得分:1)
不同版本的Windows将用户配置文件存储在不同的位置,甚至shutdown /r /t 300 /m \\computer $system
restart-computer -computername $system -Force -Wait -For PowerShell -Timeout 300 -Delay 2
文件夹的默认名称也可能不同。实际上,用户的Documents
文件夹的名称和位置可以由用户完全自定义,甚至根本不位于用户的个人资料下。因此,您不应该假设Documents
文件夹始终位于Documents
上。
在所有Windows版本上获取用户C:\\Users\\%USERNAME%\\Documents
文件夹的正确路径的最佳方法是简单地询问Windows本身。为此,请使用SHGetFolderPath(CSIDL_MYDOCUMENTS)
(Vista之前的版本)或SHGetKnownFolderPath(FOLDERID_Documents)
(Vista +),例如:
Documents