| Autor |
Beitrag |
LonghornUser
      
Beiträge: 796
|
Verfasst: Di 01.12.09 01:45
Hallo liebe Gemeinde
ich würde gerne eines meiner Programme portabel machen, sprich es soll völlig ohne die Registry und nur mit INI-Dateien auskommen, die im eigenen Verzeichnis liegen. Das ganze soll dann beispielsweise von einem USB-Stick aus laufen.
Nun hat Microsoft ja mit Windows Vista die Neuerung eingeführt, dass Programme nicht mehr in Verzeichnisse außerhalb der speziellen Benutzer-Verzeichnisse (also Users\<Name>\...) schreiben dürfen. In Windows 7 geht es meines Wissens, ohne, dass man das UAC komplett ausstellt, gar nicht mehr (es kommt eine Zugriffsverweigerung).
Gilt diese Restriktion auch für Programme, die sich *nicht* im Programme-Verzeichnis befinden? Und was muss ich für mein Vorhaben vielleicht noch beachten (vor allem in Bezug auf Schreibrechte)?
Ich hoffe, ihr habt ein paar Tipps.
Ciao LHUser
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.12.09 01:53
LonghornUser hat folgendes geschrieben : | | Nun hat Microsoft ja mit Windows Vista die Neuerung eingeführt, dass Programme nicht mehr in Verzeichnisse außerhalb der speziellen Benutzer-Verzeichnisse (also Users\<Name>\...) schreiben dürfen. |
Wer erzählt denn so ein Mist? Wenn das Programm die nötigen Rechte hat, kann es auch ins eigene Verzeichnis schreiben.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Di 01.12.09 02:15
Mhm, welches OS nutzt du denn? Ich glaube, in Vista wurde das Schreiben eines Programmes ins eigene Verzeichnis dem Programm selbst noch vorgegaukelt und in 7 gehts glaube ich, nicht mehr.
Ich werde es morgen mal testen und poste dann.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 01.12.09 02:21
Ich benutze noch XP, aber was hat das mit deinem Problem zu tun? Wenn das Programm in einem Verzeichnis in den eigenen Dateien liegt, kann es natüröcih in sein eigenes Verzeichnis schreiben. Das gilt genauso für ein Verzeichnis auf dem USB Stick.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Di 01.12.09 14:38
Hier vielleicht ein Beitrag, um noch mal zu verdeutlichen, um was es mir geht:
entwickler-forum.de/showthread.php?t=48617
Und dann habe ich mal auf die schnelle ein Projekt erstellt, was nur einen Button auf einer Form hat, der eine neue INI-Datei im Arbeitsverzeichnis der EXE erstellt und dort dann hineinschreibt. Rufe ich dieses Programm auf dem Desktop auf und klicke den Button an, läuft alles ordnungsgemäß ab.
Verschiebe ich die EXE allerdings in einen Ordner in C:\Programme (bzw. Programme (x86) weil ich ein 64-Bit-Windows habe) und klicke den Button passiert bei UAC auf Stufe 3 von 4 das, was man im angehangenen Screenshot sehen kann.
Nun ist "leider" diese Stufe 3 die Standardstufe, die bei Windows voreingestellt ist, was ziemlich problematisch ist.
Einloggen, um Attachments anzusehen!
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 01.12.09 16:01
Aber in den Programme Ordner willst du doch auch garnicht schreiben wenn du eine portable Version deines Programmes erstellen willst.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Di 01.12.09 16:04
Da hast du schon Recht, nur welche Verzeichnisse betrift diese Restriktion denn außer dem Programmverzeichnis noch?
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Di 01.12.09 16:08
Ich würde mal sagen spezielle Verzeichnisse von Windows in denen eigene Programme bzw Dateien nichts verloren haben.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 480
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Di 01.12.09 16:23
Wenn dein Programm "portabel" sein soll, dann ist es für Verzeichnisse z.B. auf einem USB-Stick gedacht. Dort hat der User dann Schreibrechte. Wenn das dann doch nicht der Fall sein sollte, solltest du den User darauf hinweisen.
Dann wird das Schreiben der Ini-Datei einfach weggelassen, und der User wird gebeten, eine Nicht-portable Version des Programmes zu nutzen.
Und wenn ein User meint, er müsse ein portables Programm in den Windows- oder den AllUsers-Ordner kopieren und sich dann als Normal-User wundert, warum das nicht unbedingt wie gewünscht funktioniert, dann hat der imho noch ganz andere Probleme.
Bei meinem Player mach ich das so: Wenn die Exe in "C:\Programme\..."(*) liegt, dann wird die Ini im Anwenderverzeichnis geschrieben und gelesen (also c:\Dokumente und Einstellungen\Username\...), ansonsten im Programmverzeichnis. Wenn das nicht geht (z.B. beim Starten von DVD oder CD) wird gar keine Ini geschrieben. So spare ich mir das Erstellen von zwei verschiedenen Versionen, und beschwert hat sich über das System noch keiner.
_______________
(*) Ich teste natürlich nicht auf "C:\Programme", sondern hole mir über die API das passende Verzeichnis. 
_________________ We are, we were and will not be.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: Di 01.12.09 16:41
Ah, alles klar. Das ist in der Tat eine Möglichkeit. Danke für eure Hilfe!
|
|
jaenicke
      
Beiträge: 19340
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 01.12.09 23:50
Du kannst auch mein System dafür benutzen, dann musst du dich nicht selbst drum kümmern. Das lässt dem Benutzer die Wahl und findet die Einstellungen automatisch für dich falls vorhanden.
www.delphi-forum.de/viewtopic.php?t=92348
|
|