Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ini Datei ohne admin zu sein (https://www.delphipraxis.net/176126-ini-datei-ohne-admin-zu-sein.html)

yogie 14. Aug 2013 07:35

ini Datei ohne admin zu sein
 
Hallo zusammen,

mein Programm verwendet INI-Dateien. Beim Schließen des Programms
(onClose der Main-Form) werden einige INI Daten geschrieben. Das klappt alles
problemlos, solange das Programm mit Administrator-Rechten läuft. Sobald
es ohne Administrator-Rechte läuft gibt es Probleme. Die INI Daten werden beim
Schließen sauber geschrieben, ich kann die Datei hinterher kontrollieren.
Danach meldet das Programm aber einen Fehler beim Schreiben der INI-Datei.

Die Fehlermeldung verweist auf eine Datei „program.ini“. Ich habe dann den von mir erzeugten Namen der Ini-Datei in „program.xxx“ verändert. Die Fehlermeldung verweist
aber immer noch auf „program.ini“. Es ist sichergestellt, das Schreibrechte für das Verzeichnis bestehen. Ich habe das gesamte Programm nach übersehenen Schreibbefehlen durchsucht und nichts weiter gefunden. Alle Zugriffe auf INI-Dateien sind in einer zentralen UNIT zusammengefaßt.

Hat jemand einen Tip?

jaenicke 14. Aug 2013 07:40

AW: ini Datei ohne admin zu sein
 
Wohin schreibst du die denn? In das Verzeichnis deiner .exe wie bei Windows 9x? Das ist seit mehr als 10 Jahren ein Programmierfehler (von ganz wenigen Ausnahmen mal abgesehen).
Mehr dazu habe ich hier geschrieben:
http://www.delphi-library.de/viewtopic.php?p=548600

Was dein konkretes Problem angeht:
Das solltest du beim Debuggen doch merken wo der Fehler auftritt. :gruebel:

Wenn das auf deinem PC nicht passiert, bleiben nur Meldungen der Art "OnClose Beginn", "OnClose Ende" usw. um festzustellen wo das passiert.

Sir Rufo 14. Aug 2013 07:42

AW: ini Datei ohne admin zu sein
 
Die einzige Ausnahme die ich kenne, ist eine grundlegende, sich nach der Installation nicht ändernde Konfigurationsdatei, auf die dann auch nur lesend zugegriffen wird ;)

yogie 14. Aug 2013 07:53

AW: ini Datei ohne admin zu sein
 
@jaenicke
ich lasse mir das APPDATA Verzeichnis geben

{uses Shlobj für CSIDL_APPDATA; glDefaultPath in QVC_global}

glDefaultPath := GetSpecialFolder(CSIDL_APPDATA) + '\Firma\';
if not DirectoryExists(glDefaultPath) then
MkDirEx(glDefaultPath); {erzeugt ev. nicht vorhandenes DIR}

und lege dort ein Unterverzeichnis an. Das klappt auch.

Blup 14. Aug 2013 08:21

AW: ini Datei ohne admin zu sein
 
Eventuell liegt der Fehler an der Stelle wo die "program.ini" gelesen wird.
Wird das File dort auch mit Nur-Lesen geöffnet?
Wird das File auch wieder ordentlich geschlossen, bzw. freigegeben?

Sir Rufo 14. Aug 2013 08:29

AW: ini Datei ohne admin zu sein
 
Zitat:

Zitat von yogie (Beitrag 1224705)
@jaenicke
ich lasse mir das APPDATA Verzeichnis geben
Delphi-Quellcode:
    {uses Shlobj für CSIDL_APPDATA; glDefaultPath in QVC_global}

    glDefaultPath := GetSpecialFolder(CSIDL_APPDATA) + '\Firma\';
    if not DirectoryExists(glDefaultPath) then
      MkDirEx(glDefaultPath); {erzeugt ev. nicht vorhandenes DIR}
und lege dort ein Unterverzeichnis an. Das klappt auch.

Auch das AppData-Verzeichnis ist default nicht zum Schreiben für jedermann bereit, sondern muss im Rahmen der Installation dafür vorbereitet werden.

Halt, Kommando zurück, das war CSIDL_COMMON_APPDATA :)

BTW: Bitte nutze für Delphi-Code auch die
Code:
[DELPHI][/DELPHI]
Tags

Bjoerk 14. Aug 2013 08:39

AW: ini Datei ohne admin zu sein
 
Wenn es nicht an den Schreibrechten liegt. Versuchen mehrere Formulare/ Klassen beim Beenden der App was in die INI zu schreiben?

jaenicke 14. Aug 2013 09:01

AW: ini Datei ohne admin zu sein
 
Zitat:

Zitat von yogie (Beitrag 1224700)
Danach meldet das Programm aber einen Fehler beim Schreiben der INI-Datei.

Wie lautet der Fehler denn? Zugriffsfehler, schon geöffnet, ...?
Und an welcher Stelle im Code kommt der?
Das müsstest du ja wie schon geschrieben im Debugger sehen.

Dalai 14. Aug 2013 10:35

AW: ini Datei ohne admin zu sein
 
Zitat:

Zitat von Sir Rufo (Beitrag 1224712)
Auch das AppData-Verzeichnis ist default nicht zum Schreiben für jedermann bereit [...]

Nicht für jedermann, aber natürlich ist es ohne weitere Maßnahmen für den Benutzer schreibbar, der das Programm gerade benutzt. Der einzige Unterschied zwischen APPDATA und LOCAL_APPDATA ist, dass letzteres kein Bestandteil der Roaming Profiles ist, also in einer Domäne nicht automatisch auf den Server synchronisiert wird. Schreibbar sind aber beide für den jeweiligen Nutzer.

Aber ich sehe gerade, du hast deinen Irrtum bemerkt 8-).

MfG Dalai

yogie 14. Aug 2013 11:23

AW: ini Datei ohne admin zu sein
 
Zitat:

Zitat von Bjoerk (Beitrag 1224713)
Wenn es nicht an den Schreibrechten liegt. Versuchen mehrere Formulare/ Klassen beim Beenden der App was in die INI zu schreiben?

nein, das macht nur das Hauptformular. Ich habe einen Breakpoint in meiner
zentralen Unit für das Screiben in die INI-Datei gesetzt und den Programmablauf
(als Admin) verfolgt. Es gibt keinen versteckten Zugriff auf die INI.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:01 Uhr.
Seite 1 von 2  1 2      

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