char desktopPath[MAX_PATH];
HRESULT r = SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, desktopPath);
if (r != S_OK) {
throw XArch(new XArchEvalWindows());
}
m_desktopPath = CString(desktopPath);
太奇怪了。这段代码在发布和 Debug模式下都适用于 VS2010。在我分发它并运行应用程序后,我会收到一条错误消息“系统找不到指定的文件”。更奇怪的是,我的同事在他的机器上运行了相同的应用程序并且它运行正常。
在 MSDN 中它说 SHGetFolderPath 已被弃用,所以我尝试使用 SHGetKnownFolderPath。同样的情况。
PWSTR desktopPathW = 0;
HRESULT hr = SHGetKnownFolderPath(FOLDERID_Desktop, 0, NULL, &desktopPathW);
if (!SUCCEEDED(hr)) {
throw XArch(new XArchEvalWindows());
}
CoTaskMemFree(static_cast<void*>(desktopPathW));
知道发生了什么事吗?或者我该如何调试它?
提前致谢。 杰瑞
最佳答案
注释明确指出 S_OK
是唯一成功的结果,错误代码包括 S_FALSE
、E_FAIL
和 E_INVALIDARG
。您错误地认为这 3 个是唯一的错误代码。
关于c++ - SHGetFolderPath 在分发版本中返回垃圾字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19588132/