AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) AppData Folder wird falsch zurück gegeben von Windows
Thema durchsuchen
Ansicht
Themen-Optionen

AppData Folder wird falsch zurück gegeben von Windows

Ein Thema von Cylence · begonnen am 2. Dez 2010 · letzter Beitrag vom 2. Dez 2010
Antwort Antwort
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#1

AppData Folder wird falsch zurück gegeben von Windows

  Alt 2. Dez 2010, 10:24
Hi,

wir haben einen Kunden(unter 20000) bei dem funktioniert das auslesen des Appdata Pfades nicht richtig, wir lesen den Pfad so aus:

Delphi-Quellcode:
const
 ExplorerKey = '\Software\Microsoft\Windows\CurrentVersion\Explorer\';
begin
  Reg := TRegistry.Create;
  Reg.Access := KEY_READ;
  try
    Reg.RootKey := HKey_Current_User;
    if Reg.OpenKey(ExplorerKey + 'Shell Folders', FALSE) then
    begin
      FAppData := Reg.ReadString('AppData');
    end;
bei jedem anderen user kommt da der richtige appdata pfad raus unter dem usernamen, wie man es bei vista/7 nutzen sollte. Aber unter einem Rechner, kommt als Ergebnis dieser Pfad raus:

C:\Windows\system32\config\systemprofile\AppData\R oaming

und da hat der user keine schreibrechte und somit geht die aktion schief, dort sollten programmeinstellungen in einer IniDatei gespeichert werden.

Eigentlich, bei allen anderen rechnern kommt dieser Pfad raus:

C:\Users\USERNAME\AppData\Roaming

wie kann das sein? Kennt jemand das Problem?

Thanks

tom
Tom
Just DO it

Geändert von Cylence ( 2. Dez 2010 um 10:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von holliesoft
holliesoft

Registriert seit: 4. Apr 2005
Ort: Gau-Algesheim
250 Beiträge
 
FreePascal / Lazarus
 
#2

AW: AppData Folder wird falsch zurück gegeben von Windows

  Alt 2. Dez 2010, 10:36
Hi,

über die Registry würde ich den Pfad nicht auslesen, sondern über die entsprechenden Shell-Funktionen.
In der Code Lib gibt es dazu was.
Wird mit dieser Methode der selbe falsche Pfad ausgegeben?
Wenn Du an dem betroffenen Rechner im Explorer in der Adresszeile "%appdata%" eingibst und ENTER drückst, landet Du da in dem selben falschen Pfad? wenn ja, dann ist die Konfiguration dieses Rechners schief.

gruß
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: AppData Folder wird falsch zurück gegeben von Windows

  Alt 2. Dez 2010, 11:37
und das geht ganz gemütlich mit der Unit die du hier findest
Darin hast du auch eine nette Procedure, die alle SpecialFolders ausliest und in eine StringList packt.

procedure GetDirList( const DirList : TStringList; const WithRights : Boolean = False ); Damit kannst du dir auch eine MiniProg bauen, und die Ergebnisse in einem Memo anzeigen lassen (oder per Mail schicken lassen, whatever).
Die einzelnen Rechte kann man sich damit auch gleich auslesen und hat somit eine schnelle Information, was auf dem Kundenrechner geht und was nicht
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 2. Dez 2010 um 11:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: AppData Folder wird falsch zurück gegeben von Windows

  Alt 2. Dez 2010, 11:46
Bitte lesen und dann ganz fix das Programm ändern:
http://blogs.msdn.com/b/oldnewthing/.../03/55532.aspx
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: AppData Folder wird falsch zurück gegeben von Windows

  Alt 2. Dez 2010, 13:37
Hi,

ok ich werd das mal weiter geben danke für die schnelle Hilfe!
Ich verwende in meinen Projekten auch teilweise die JvComputerInfosEx aus den JediTools.
die machen das da so:

Delphi-Quellcode:
function GetAppdataFolder: string;
begin
  {$IFDEF CLR}
  Result := System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
  {$ELSE ~CLR}
  Result := GetSpecialFolderLocation(CSIDL_APPDATA);
  {$ENDIF ~CLR}
end;
Tom
Just DO it
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz