AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi INI-Datei von windows nach ProgramData verschieben.
Thema durchsuchen
Ansicht
Themen-Optionen

INI-Datei von windows nach ProgramData verschieben.

Ein Thema von bernau · begonnen am 30. Nov 2015 · letzter Beitrag vom 1. Dez 2015
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#1

INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:18
Alte Software von mir schreibt seit Win95 eine Ini-Datei im Windows-Verzeichnis. Mit Win7 und neuer wird die INI-Datei dann in's Virtual Store geschrieben.

Ich will von den Altlasten weg. Möchte also die INI-Dateien nach ProgramData verschieben, da wo sie hingehören. Habe mir gedacht, daß ich das Programm so erweitere, daß wenn es gestartet wird, ich die INI-Dateien einfach verschiebe. Geht natürlich nicht, da das Programm ja Adminrechte braucht, damit die INI-Datei aus dem Windows-Verzeichnis entfernt werden kann. Wenn ich das Programm mit Adminrechten starten, kann ich die Ini-Datei verschieben, kopieren, löschen etc.

Mein Dilemma ist aber, daß die verschobene INI-Datei auch im ProgramData-Verzeichnis Admin-Rechte braucht, damit diese Verändert werden kann. Wenn ich das Programm also neu starte (ohne Adminrechte), kann es dort in die INI-Datei nichts mehr hinein schreiben.

Wie habt Ihr das mit eueren alten INI-Dateien gehandhabt.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:23
dann lass die Ini-Datei doch in Windows-Verzeichnis. Starte die Anwendung mit normalen Rechten. Fehlt die Ini-Datei am neuen Platz, dann lad die IniDatei vom alten Platz und mach denn einfach in INi.SaveFile() im neuen Verzeichnis und gut ist...
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:28
Ich möchte aber vermeiden, daß zig verschiedene Versionen der INI-Datei verstreut auf dem Rechner rumliegen. Sauberer wäre das Löschen.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#4

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:30
Dann starte mit RunAs ein Delete-Script als Admin.

Beispiele findest Du hier im Form..

Dann kannst Du deine App ganz normal starten und benötigst die erweiterten Rechte ja nur zum Löschen ..
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:31
dann starte eine kleine batch die das Löschen übernimmt eben mit einer Anforderung nach höheren Rechten. Musst halt dem Anwender erklären was passiert - und sicher stellen, dass die richtige (und nur die) ini-Datei gelöscht wird. Daher würde ich her gehen und die Ini-Datei schlicht liegen lassen. Beim Deinstall wird die entfernt - alles andere ist Kosmetik. Wäre zwar schön, aber ich persönlich würde das Risiko, dass etwas schief läuft höher bewerten als den Gewinn....

Grüße

Geändert von Lemmy (30. Nov 2015 um 12:52 Uhr)
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 12:50
Wäre es nicht sinnvoller, das ins AppData des Benutzers zu schreiben? ProgramData ist eher sinnvoll für Dienste und braucht ggf. Admin-Rechte.
Ist natürlich abhängig von deiner Anwendung, was du brauchst.
  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
 
#7

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 13:54
Die Einstellungen für die Anwendung liegen in ProgramData\{Company}\{ApplicationName}.
Die Benutzer-Einstellungen für die Anwendung liegen in AppData\{Company}\{ApplicationName}.

Um die effektiven Einstellungen zu laden, werden die Einstellungen aus ProgramData\{Company}\{ApplicationName} und AppData\{Company}\{ApplicationName} gelesen.

Ändert ein Benutzer seine Einstellungen, dann wird das in AppData\{Company}\{ApplicationName} gespeichert.

Läuft die Anwendung mit Administrator-Rechten, dann kann man zusätzlich anbieten, die Einstellungen für ProgramData\{Company}\{ApplicationName} zu bearbeiten.

Um die alten Einstellungen zu migrieren, beauftragt man das Setup-Programm zum Kopieren der Einstellungen aus dem Windows-Verzeichnis in ProgramData\{Company}\{ApplicationName}.

Beim Starten der Anwendung prüft man, ob es schon eine Einstellungs-Datei unter AppData\{Company}\{ApplicationName} gibt. Wenn nicht, dann lädt man die Einstellungen auf die alte Art und Weise und schreibt diese in AppData\{Company}\{ApplicationName}.
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)
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 15:10
Danke für eure Hinweise. Ich lasse mir mal durch den Kopf gehen, was die beste Lösung ist.
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 17:18
Tja. Das war für mich mal wieder ein Griff in den Lokus.

Ich habe folgendes aus dem Dokwiki für die Funktion System.IOUtils.TPath.GetPublicPath

Zitat:
Returns the path to the directory where you can store application data that can be shared with other applications.
Note: In desktop applications, "shared" means "shared between different users". In mobile applications, "shared" means "shared between different applications".
Als Ergebnis bekomme ich den Pfad c:\ProgramData

Das bedeutet für mich, ich habe einen zentralen Punkt, in dem ich Programmeinstellungen speichere. Ich möchte es so haben, daß gewisse Einstellungen von jedem Benutzer geschrieben werden können. Wäre also der richtige Ort. Habe ich gedacht.......

Habe jetzt mal etwas gespielt und einen neuen Benutzer in Windows angelegt. Das Programm hatte ich vorher schon unter meinem Standardbenutzer gestartet und somit schon eine INI-Datei nach c:\ProgramData\blibblab geschrieben. Mit dem neuen Benutzer kann ich zwar lesen, habe aber keine Schreibberechtigung auf diese Datei, die mit dem gleichen Programm, aber unter einem anderen Benutzer geschrieben wurde. Habe ich wohl falsch gedacht.

Ich welches Verzeichnis kann jedes Programm schreiben, ohne daß ich auf den angemeldeten Benutzer Rücksicht nehmen muss?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.006 Beiträge
 
Delphi 12 Athens
 
#10

AW: INI-Datei von windows nach ProgramData verschieben.

  Alt 30. Nov 2015, 17:32
Ich kann jetzt die Quelle nicht mehr nennen, aber ich meine, ein App-spezifisches Unterverzeichnis von ProgramData ist genau der richtige Ort. Dieser sollte allerdings vom Setup-Programm angelegt und mit den erforderlichen Rechten versehen werden. Bei mir ist das schon ein Standard-Schnipsel im InnoSetup-Skript.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 12:42 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