0
    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);

太奇怪了。这段代码在 VS2010 的 release 和 debug 模式下都可以工作。在我分发它并运行应用程序后,我会收到一条错误消息“系统找不到指定的文件”。更奇怪的是我的同事在他的机器上运行相同的应用程序并且它可以工作。

在 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));

关于发生了什么的任何想法?或者我应该如何调试这个?

提前致谢。杰瑞

4

1 回答 1

2

注释明确指出这S_OK是唯一的成功结果,错误代码包括 S_FALSEE_FAILE_INVALIDARG。您错误地认为这 3 个是唯一的错误代码。

于 2013-10-25T11:12:17.557 回答