【发布时间】:2010-07-01 08:28:46
【问题描述】:
是否有任何可靠的 API 可以用 C++ 在 Windows 中获取 Windows 文件夹? 我正在使用以下方式,但是失败了。
BOOL CQUserInfoHelper::GetWindowsPath(CString& strWindowsPath)
{
TCHAR windowsPathTemp[MAX_PATH];
int nSize = MAX_PATH;
::GetWindowsDirectory(
windowsPathTemp,
nSize);
strWindowsPath = windowsPathTemp;
return TRUE;
}
【问题讨论】:
-
“它失败了”不是我喜欢阅读的错误描述。
-
它不返回 XX:\\Windows,而是返回别的东西。这是我的用户报告的,我无法在他们的电脑上调试它
-
有两个原因:如果长度大于缓冲区的大小,则返回值是保存路径所需的缓冲区大小。如果函数失败,则返回值为零。要获取扩展错误信息,请调用 GetLastError。处理这些问题
-
您还应该始终将字符串缓冲区初始化为 0,例如TCHAR windowsPathTemp[MAX_PATH] = {0}
-
@humbagumba:为什么? GetWindowsDirectory() 将其用作
[out]参数。 Microsoft 的内部 API 检查工具保证永远不会读取[out]参数。如果它没有被读取,它的内容就无关紧要了。