Seite 1 von 1

APPDATA / eigenes Verzeichnis je User [ERLEDIGT]

Verfasst: Di, 19. Jan 2021 7:44
von Koverhage
Wo ist die beste Möglichkeit Dateien je User abzulegen ?
Hintergrund:
Immer mehr Kunden nutzen eine Cloud (beim TS ist es glaube ich ähnlich) und das Laufwerk C ist für alle gleich.
Bisher habe ich es so, dass der Nutzer seine Datei mit den eigenen Formulareinstellungen / Drucker in "seinem" Ordner auf Laufwerk C hat.
Die funktioniert hier nicht mehr und ich muss einen Windows konformen Weg gehen.
Was würdet Ihr empfehlen ?

Re: APPDATA / eigenes Verezcihnis je User

Verfasst: Di, 19. Jan 2021 7:53
von Tom
Hallo, Klaus.

Das, was Du beschreibst, trifft nur zu, wenn alle mit derselben Benutzeranmeldung arbeiten, was aus vielen Gründen eher nicht zu empfehlen ist. AppData ist ein Unterverzeichnis des Benutzerverzeichnisses. Wenn es unumgänglich ist, dass alle mit denselben Windows-Benutzerdaten auf derselben Maschine arbeiten, gibt es wahrscheinlich trotzdem innerhalb der Anwendung unterschiedliche Anmeldungen, die dann genutzt werden könnten, um z.B. im AppData\Roaming/Local\MeineApp-Verzeichnis zusätzlich nach Initialen zu verzweigen. Das machen wir in solchen Situationen, die es vor allem im Terminal Server-Kontext geben kann (vor allem bei Gast-Zugängen), dann auch in der Registry - die Gruppen haben in diesem Fall Untergruppen. Das ist zwar etwas schwierig im Blick zu behalten, vor allem, wenn es um ggf. verwaiste Daten geht, aber handlicher als die Alternativen.

Re: APPDATA / eigenes Verzeichnis je User

Verfasst: Di, 19. Jan 2021 8:45
von Koverhage
Vielleicht habe ich mich falsch ausgedrückt.
War jetzt gerade nochmals auf einigen Rechner
User 1
Eingabeaufforderung
Users\user.1
APPDATA
c:\Users\user.1\AppData\Roaming/

User 2
Eingabeaufforderung
Users\user.2
APPDATA
c:\Users\user.2\AppData\Roaming/

Re: APPDATA / eigenes Verzeichnis je User

Verfasst: Di, 19. Jan 2021 8:58
von Tom
Und was möchtest Du erreichen?

Windows hat diverse API-Funktionen, um Ordnereinstellungen abzurufen, etwa "GetTempPath(A)", um den benutzerbezogenen Temp-Pfad abzurufen (in aller Regel " C:\Users\<User>\AppData\Local\Temp\"), und die für den AppData-Roaming-Ordner sollte m.E. "GetAppContainerFolderPath(A)" (wie GetTempPath in KERNEL32.DLL) sein. Allerdings musst Du Dich da um einiges selbst kümmern, denn Windows legt das nicht einfach für jede Anwendung an, die es auf dem Rechner gibt.

Re: APPDATA / eigenes Verzeichnis je User

Verfasst: Di, 19. Jan 2021 9:09
von Jan
Klaus,

wenn es nur um temporäre Daten geht mach ich das mit getEnv("TEMP"). Das schreibt sauber in den von Tom angesprochenen User-Temp-Ordner.

Stellt sich mir nur die Frage ob daß das ist was Du willst. Für mich klang das eher als wolltest Du was in das User-Doc-Verzeichnis legen, oder irgend was in der Richtung.

Jan

Re: APPDATA / eigenes Verzeichnis je User

Verfasst: Di, 19. Jan 2021 9:43
von Koverhage
@Tom
Was ich erreichen möchte:
Jeder Anwender im Netz kann seine eigenen Druckereinstellungen haben, da es ja durchaus vorkommen kann, das der Anwender bestimmte Formulare (Briefe, etc)
auf seinem Arbeitsplatzdrucker anstatt auf einem Netzwerkdrucker drucken möchte.
@Jan
Temp ist sehr ungünstig, da sträuben sich mir die Haare.
Für mich bedeutet TEMP ein temporärer Ordner (leider wird der von Windows und Sonstiges zugemüllt und nicht mehr gelöscht wenn die Dateien und Ordner nicht mehr benötigt werden)
Die (Stamm)Daten sollen ja bleiben, deswegen mache ich das jetzt wie folgt.

Code: Alles auswählen

static function getRoamingDir
Local cRetCode := "", ;
      cBenutzerDir := getenv("appdata")+"\HKABR"

IF Fexists("c:\spool\drform.dbf")
   makedir(cBenutzerDir)
   FileMove("c:\spool\drform.dbf",cBenutzerDir)
   IF Fexists("c:\spool\drform.cdx")
      FileMove("c:\spool\drform.cdx",cBenutzerDir)
   ENDIF
   IF Fexists("c:\spool\drform.str")
      FileMove("c:\spool\drform.str",cBenutzerDir)
   ENDIF
ENDIF   
cRetCode := iif( Fexists(cBenutzerDir+"\drform.dbf"),cBenutzerDir+"\",cAppData)

Re: APPDATA / eigenes Verzeichnis je User

Verfasst: Di, 19. Jan 2021 9:56
von ramses
Koverhage hat geschrieben: Di, 19. Jan 2021 9:43 Was ich erreichen möchte:
Jeder Anwender im Netz kann seine eigenen Druckereinstellungen haben, da es ja durchaus vorkommen kann, das der Anwender bestimmte Formulare (Briefe, etc)
Hallo Klaus

ich lege die alle in einer Datenbank ab. War bis jetzt am einfachsten.

Re: APPDATA / eigenes Verzeichnis je User [ERLEDIGT]

Verfasst: Di, 19. Jan 2021 11:43
von Koverhage
Hallo Carlo,
bisher war es für mich am einfachsten wenn jeder Arbeitsplatz auf Laufwerk C seinen eigenen Ordner mit der Datei hat.
Da habe ich bis auf den Pfad zu prüfen nichts anderes machen müssen.

Re: APPDATA / eigenes Verzeichnis je User [ERLEDIGT]

Verfasst: Mi, 20. Jan 2021 7:24
von Wolfgang Ciriack
Du könntest für jeden Benutzer ein eigenes Verzeichnis anlegen, z.B. mit
verz := "C:\Programm\" + GetEnv("CLIENTNAME") + "_" + upper(GetEnv("USERNAME")

Re: APPDATA / eigenes Verzeichnis je User [ERLEDIGT]

Verfasst: Mi, 20. Jan 2021 8:12
von Tom
Genau zu diesem Zweck sind ja die AppData-Verzeichnisse gedacht, Wolfgang. Und dadurch, dass sie je nach Windows-Anmeldung in einem anderen Kontext liegen, sind sie eigentlich immer automatisch benutzerbezogen. Es sei denn, dieselbe Anmeldung wird von verschiedenen Leuten verwendet.