Entwickler-Ecke
Dateizugriff - Windows 7 und Ini Files, Pfad ist richtig, unable to create
moonraker - Di 19.07.11 13:21
Titel: Windows 7 und Ini Files, Pfad ist richtig, unable to create
Hallo Leute,
Hab ein Delphi 5 Programm zum warten.
Dieses speichert ein Projektfile als ini File mittels TInifile componente.
Nur die Endung ist anders.
Nun stellte das bis anhin kein Problem dar, auch nicht auf Windows 7 bzw Vista.
Jetzt hab ich einen W7 Rechner der mir unregelmässig verweigert das File zu erstellen (Create) oder upzudaten (TmemInifile.update).
Meldet entweder zuwenig Rechte- wenden sie sich an den admin , oder exceptuion unalbe to create.
Nun hab ich als der User aber vollzugriff auf den Ordner (das selbe File mit editor kann ich nach belkieben ändern, speichern usw)
Gespeichert wird auf dem Dokumentepfad in einem Unterordner der bei Installation angelegt wird.
Habt Ihr Tipps was da los sein könnte? Langsam gehen mir die Ideen aus.
Bin für alle Tipps dankbar.
moonraker - Di 19.07.11 14:05
hallo acnut,
nein diesmal ist es nicht das klassische Problem dass ich keien Rechte hab.
Zumindest sollte ich sie haben, da ich das File in die eigenen Dokumente schreib.
auch die Optionen oder anderen Inis sind dort wo sie hingehören (%APPDATA% usw...)
jaenicke - Di 19.07.11 14:19
Du könntest einmal mit dem Process Monitor die Zugriffe loggen und dann schauen was dort passiert ist.
Relative Pfade hast du sicher nirgends mehr?
moonraker - Di 19.07.11 15:33
hallo,
nein, auf jeden fall nicht mehr in diesem bereich wo es mich ärgert.
hab mir auch die aktuellen pfade zur sicherheit anzeigen lassen.
Offline Dateien deaktiviern ändert ein wenig die Fehlerhäufigkeit wies scheint ??
turboPASCAL - Di 19.07.11 15:35
mach doch mal 'n Test mit AssignFile() und las dir das IOResult() zurückgeben.
Oder einfach mal Testen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81:
| program Testme;
{$APPTYPE CONSOLE}
uses Windows, Inifiles, SysUtils, ShellAPI, ActiveX, ShlObj;
function GetSpecialFolder (CSIDL: Integer) : String; var ItemIDList: PItemIDList; sFolderPath : String; iSystemFolder : Integer; pMalloc : IMalloc; begin pMalloc := nil; sFolderPath := ''; SHGetMalloc (pMalloc); if (pMalloc = nil) then begin Exit; end; try iSystemFolder := CSIDL; if (SUCCEEDED (SHGetSpecialFolderLocation (0, iSystemFolder, ItemIDList))) then begin SetLength (sFolderPath, MAX_PATH); if (SHGetPathFromIDList(ItemIDList, PChar(sFolderPath))) then begin SetLength (sFolderPath, Length(PChar(sFolderPath))); end; end; finally Result := sFolderPath; pMalloc.Free(ItemIDList); end; end;
var myDocPath: string; myFilePath: string;
begin myDocPath := GetSpecialFolder(CSIDL_PERSONAL);
if myDocPath <> '' then begin writeln(myDocPath);
myFilePath := myDocPath + '\Test.cfg'; writeln(myFilePath);
if DirectoryExists(myDocPath) then begin with TInifile.Create(myFilePath) do try WriteString('Testsection', 'Test', 'Test123'); writeln('write to Inifile...'); finally Free; end;
end else begin writeln('Path existiert nicht !'); end;
end else begin writeln('Path ist leer !'); end;
writeln('done.'); readln; end. |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!