У меня есть приложение, которое иногда не может получить путь к папке AppData
.
Ситуация, похоже, возникает только на нашей ферме серверов Citrix, а не для каждого пользователя и не всегда (я почти не смог ее воспроизвести).
Проблема проявляется следующим образом:
SHGetFolderLocation
называется так:
Value := SHGetFolderLocation (0, CLSID, 0, 0, pidl);
try
case Value of
S_OK:
begin
if not ShGetPathfromIDList(pidl, Path) then
RaiseLastOSError();
Result := trim(string(Path));
break;
end;
else
RaiseLastOSError();
end;
finally
CoTaskMemFree(pidl);
end;
(CLSID
установлен на CSIDL_APPDATA
, который определяется как 0x001a
)
В соответствии с трассировкой стека мы видим, что SHGetFolderLocation
возвращает false, вызывая вызов RaiseLastOSError
, который указывает, что последний код ошибки был 59:
System Error. Code: 59. An unexpected network error occurred
Я ломаю голову, пытаясь выяснить, как я могу получить такое сообщение об ошибке: даже если возникла проблема с сетью, я не вижу причин, по которым SHGetFolderLocation
может быть затронуто этим.
Есть предложения?