Ich hatte mal ein relativ ähnliches Problem. Allerdings konnte ich nie wirklich herausfinden wieso es zu dem Problem kommt. Ich hab stattdessen begonnen die entsprechenden APIs zu meiden und mir den Wert einfach selbst aus der Registry gefischt:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
registry, windows;
//FIXME: Diese Funktion ist ANSI only, bedeutet UNICODE Pfade werden nicht
// korrekt zurückgeliefert
function GetRegistryPath(valuename :
string) :
string;
begin
result := '
';
with TRegistry.Create
do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKeyReadOnly('
\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer'+
'
\Shell Folders');
if ValueExists(valuename)
then
result := ReadString(valuename);
CloseKey;
Free;
end;
end;
begin
writeln(GetRegistryPath('
Common Documents'));
readln;
end.
Solltest Du also keine Lösung für Dein Problem finden, hast Du hier wenigstens eine Alternative
.