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 で動作します。配布してアプリケーションを実行すると、「指定されたファイルが見つかりません」というエラーが表示されます。さらに奇妙なのは、同僚が自分のマシンで同じアプリケーションを実行し、それが機能することです。
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));
何が起こっているかについて何か考えはありますか?または、これをどのようにデバッグすると思いますか?
前もって感謝します。ジェリー