![]() |
Delphi-Version: 2009
im Programmverzeichnis Datei ändern?
Hallo,
ich komme noch nicht klar mit den ganzen Restriktionen im Programmverzeichnis. Normalerweise werden ja die Anwendungsdaten in das Anwendungsverzeichnis geschrieben. Wie kann ich prüfen, ob ich doch Zugriff auf eine Datei im Programmordner habe? Mit FileGetAttr bekomme ich als Info, dass die Datei nicht schreibgeschützt ist. Ich habe aber trotzdem keinen Zugriff auf die Datei, da offensichtlich der Ordner ja schreibgeschützt ist. Müßte ich da den Ordner abfragen oder wie sollte ich vorgehen. Wenn ich mit FileGetAttr frage, kommt nur die Info, dass es sich um einen Ordner handelt. Wie kann ich vorgehen? |
AW: im Programmverzeichnis Datei ändern?
Einfach davon ausgehen, dass es nicht geht und die Daten woanders ablegen!
|
AW: im Programmverzeichnis Datei ändern?
Zitat:
|
AW: im Programmverzeichnis Datei ändern?
Nicht wenn man die von Betriebssystem dafür vorgesehene Verzeichnisse verwendet.
|
AW: im Programmverzeichnis Datei ändern?
Oder man wirft, wenn man es wie die Designer des Betriebssytems, eigener Software, namentlich MSSQL-Server ermöglichen möchte, die Regeln zu brechen, einen Blick auf CACLS.
(sorry für Ketzertum) |
AW: im Programmverzeichnis Datei ändern?
Liste der Anhänge anzeigen (Anzahl: 1)
@zeras
Also im Programmeverzeichniss hast du als normaler Nutzer (kein Administrator) Leserechte, aber keine Schreibrechte. Hier geht es um Rechte, nicht Schreibschutz. Äpfel und Birnen. Wenn du also prüfen willst ob du eine Datei ändern kannst, dann zuerst den Schreibschutz überprüfen und dann ob du Änderungsrechte hast. Klingt kompliziert, ist es auch. Du kannst dir irgendwo eine Funktion suchen die Prüft ob du Adminrechte hast, aber auch das muß nichts bedeuten. Auch einem Admin kann man die Schreibrechte nehmen. Deshalb den einfachen Weg. Es gibt Ordner wo du deine Daten schreiben kannst. Nur mal interessehalber: was willst du ändern? |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Das ist schon seit Windows NT verboten. Soviel zu Normal ... es ist also schon seit fast 13 Jahren verboten und wenn die Programmierer es immernoch nicht kapiert haben, dann sind sie selber Schuld. Bis Windows XP hat es nur fast keiner gemerkt, weil nahezu alle nur mit Adminrechten unterwegs waren. Was nicht sonderlich intelligent war, wie man an der Verbreitung von Schadsoftware gut erkennen kann. Seit nun schon fast 6 Jahren hat Microfot dem endlich einen Riegel vorgeschoben und den automatisch erzeugten Standardbenutzer nicht mehr mit vollen Rechten ausgestattet. Du hattest nun also schon 6 Jahre Zeit dich gezwungener Maßen daran zu gewöhnen. Und auch schon vor WinNT gab es Standardverzeichnisse, für viele Daten, so daß man sich an diese Verzeichnisse noch viel länger dran gewöhnen konnte. |
AW: im Programmverzeichnis Datei ändern?
Zudem hat Microsoft zusammen mit der UAC auch die Verzeichnisvirtualisierung eingeführt, um nicht alle Programme der "Unverbesserlichen" nicht mit einem Schlag unbrauchbar zu machen.
Der Schuss ging imho nach hinten los, da es für die meisten immer noch keinen Grund gibt, ihre Vorgehensweise zu überdenken. Zudem ist das System nun unübersichtlich ( welche Version der Ini gilt nun?) Es wäre besser gewesen, die gelbe Karte zu zeigen. |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Ich habe einige Programme, die auf verschiedene Art genutzt werden können. 1.) Einmal als normales Programm, wo der Admin das Prog installieren muss. Dann werden auch die Pfade eingehalten. 2.) Dann auf einem Server. 3.) Auf einem Terminalserver. Es geht bei 2.) und 3.) eigentlich nur um die Anmeldedaten. Diese sollen nicht von jedem User eingegeben werden müssen, sondern sollen schon freigeschaltet werden können. So habe ich diese erst mal in den Programmordner mit kopiert beim Setup. Danach muss aber der Kunde noch einmalig die Freischaltedaten eintragen. Wenn er das nicht im Programmpfad machen kann, weil keine Rechte, dann müßte das Programm dann im Userpfad die Anmeldedaten mit ablegen. Wenn er aber Rechte hat, dann wärden die Anmeldedaten dann für alle User gültig. So das mal im Groben erklärt. Ich werde mal überlegen, wie ich das noch anders lösen kann. |
AW: im Programmverzeichnis Datei ändern?
Mit den entsprechenden Rechten in HKEY_LOCAL_MACHINE
|
AW: im Programmverzeichnis Datei ändern?
@zeras
Ein ähnliches Problem habe ich auch gerade (aber wirklich nur ähnlich), und muß zugeben für mich noch keine zufriedenstellende Lösung gefunden zu haben. Denn ich stehe vor dem Problem Daten zu einem Programm mitzuliefern, ohne die das Programm eigentlich nutzlos ist (somit muß es jedem Konto zur Verfügung stehen), auf der anderen Seite sollen die Nutzer die Daten individuell anpassen können. Und mit diesen Anforderungen stehe ich eigentlich vor einem Ding der Unmöglichkeit. Denn Windows bietet die Möglichkeit nicht, zumindest nicht ohne weiteres. Denn Programme Verzeichnis bietet keine Schreibrechte, Anwendungsdatenordner ist nur für den Nutzer zugänglich, und gemeinsame Dateien hört sich zwar vielversprächend an, ist aber nur ein Ordner den jeder sehen kann, aber nicht in dem jeder Schreibrechte hat. Um auf den Punkt zu kommen: ich hab mir paar Wochen den Kopf zermartert, aber es gibt hier keine Lösung. Das einzige was man machen kann ist eine Pseudolösung, die die Nutzer akzeptieren müssen. |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Im Moment frage ich im Programmverzeichnis die Daten ab, die bei der Installation mitkommen und dann noch im Userpfad. Geschrieben wird aber alles dann in den Userpfad. Mit der Registry wollte ich nicht anfangen, da ich kein Freund davon bin. Je mehr Programme dort reinschreiben, umso langsamer wird das System. OK, nun habe ich eine SSD und Win7 und das ist meines Erachtens sehr schnell, aber was ist in einem Jahr? Dann habe ich noch weitere Programme installiert und das System läuft dann wieder langsamer. Aber das ist Philosophisache. |
AW: im Programmverzeichnis Datei ändern?
Zitat:
![]() Zitat:
|
AW: im Programmverzeichnis Datei ändern?
Zitat:
|
AW: im Programmverzeichnis Datei ändern?
Im Notfall kann man sogar eigene Registryzweige erstellen, welche in einer externen Datei liegen.
Und da die Registry nie komplett geladen ist, sondern sich nur grade verwendete Teile in einer Cache liegen. Das Dateisystem wird ja auch nicht urplötzlich langsamer, nur weil in irgendeinem Unterverzeichnis zuviele Dateien befinden. Die Registry ist eine wichtige Datenablage, da kann man schon davon ausgehn, daß Microsoft dort ein bissl Arbeit in die Optimierung steckt. ![]() Die Registry besteht sowieso schon aus mehreren Teilen und einige Teile existieren noch nichtmal in Echt. HKEY_CLASSES_ROOT existiert garnicht. Das ist ein zusammengemischter Unterpfad aus HKEY_CURRENT_USER und HKEY_LOCAL_MACHINE. HKEY_CURRENT_CONFIG und HKEY_CURRENT_USER sind auch nur benutzerabhängige Unterpfade aus HKEY_USERS. ... |
AW: im Programmverzeichnis Datei ändern?
@Popov
Ich weiß zwar nicht um welche Daten es sich handelt, aber ich habe so was teilweise mit Ini-Dateien. Die Lösung sieht da aber recht einfach aus. Die Ini-Datei aus dem Programm-Verzeichnis Und dem User-Verzeichnis werden jeweils eingelesen TMemIniFile. Über eine separate Klasse, die die Einstellungen kapselt, werden die Einstellungen gelesen. Existiert ein Eintrag in der User-Ini, wird dieser genommen, ansosnten der aus der Programm-Ini. Änderungen werden logischweise nur in die User-Ini geschrieben. Analog lässt sich dieses auch mit jedem beliebigen Datei-Format bewerkstelligen. |
AW: im Programmverzeichnis Datei ändern?
@Sir Rufo
Das eigentliche Produkt sind die Dateien, das Programm dient lediglich um die Dateien zu nutzen. Es ist zwar ein wichtiger Bestandteil, denn ohne, sind die Daten nutzlos, aber trotzdem, auf die Daten kommt es an. Wenn ich Excel installiere, dann ist Excel das Produkt, wenn ich Nero installiere, dann ist eben Nero das Produkt. Jeder kann sie von jedem Konto aus nutzen. Hier sind die Daten das Produkt. Aber Daten sind nun mal Daten und können im Gegensatz zum Programm geändert werden. Und das ist das Besondere. Das Programm das ich klone macht das einfach: die Daten liegen im Programmeordner und können somit nur im Adminkonto geändert werden. Ich hab einigen Nutzer des anderen Programms gesprochen und die meinen, das ist nun mal so, damit muß man leben. Es wird also akzeptiert. Trotzdem, jedes mal für eine Anpassung das Konto wechseln ist nicht optimal. Ich biete inzwischen eine Pseudolösung an, weil es nicht anders geht. Der Nutzer kann sich eine Kopie der Datei erstellen und kann diese ändern. Er hat eben die Wahl: ins Adminkonto wechseln und es für alle Konten ändern, oder im Konto kopieren und es nicht nicht in anderen Konten nutzen können. Eine andere Lösung gibt es nicht. |
AW: im Programmverzeichnis Datei ändern?
Es ist schade, das Windows es (noch nicht) fertig bringt, den Kontext "Applikation" als Tupel von (Code, statische Daten, gemeinsame Daten aller Nutzer, dynamische Daten pro Benutzer) zu sehen, sodaß der einfache Anwender es versteht.
Klar gibt es eine sehr sinnvolle Regel, aber ich muss im Explorer trotzdem wissen, wo ich suchen muss. Was passiert eigentlich, wenn ich bei der Installation (als Admin) im Programmordner einen Link zu <AppData>\<MeinProgramm> anlege? Wäre das nichts? |
AW: im Programmverzeichnis Datei ändern?
Es gibt neben Gemeinsame Dokumente auch All Users Anwendungsdaten, also Anwendungsdaten Ordner für alle. Allerdings haben da nicht alle dort Schreibrechte. Somit es es das gleiche wie Daten in Programme-Ordner, nur in grün.
|
AW: im Programmverzeichnis Datei ändern?
Die anwenderspezifischen Einstellungen kommen in den anwenderspezifischen Ordner.
Die allgemeingültigen Einstellungen eben in den allgemeinen Ordner. Wer darauf keine Schreibrechte hat, darf anderen Anwendern wohl auch nicht vorschreiben, was bzw. wie sie etwas zu tun haben. Desweiteren gibt es -sofern ich mich erinnere- 'öffentliche Dokumente'. Erstelle die Unterverzeichnisse so, wie Furtbichler beschrieben hat, also als Link auf die zugegebenermaßen etwas versteckten, aber richtigen Verzeichnisse. Dann sind die Daten und Programme alle gemeinsam sichtbar. Nebenbei: Egal, was Du vorhast: Ich werde mein Windows immer so kaputtkonfigurieren können, das irgend etwas nicht geht. Es reicht, wenn es in 99% der Fälle funktioniert, weil 99% der Anwender die Finger vom Rechtesystem lassen. Merke: Man muss nicht jeden Fall erschlagen, sondern nur dokumentieren, in welchen Fällen die Applikation funktioniert. Ein Auto fährt ja auch nicht mit Wasser, nur weil es im Amazonas keine Tankstellen gibt, aber einem dort vielleicht das Benzin aus geht. |
AW: im Programmverzeichnis Datei ändern?
Iwo Asnet, die Sichtbarkeit ist kein Problem.
|
AW: im Programmverzeichnis Datei ändern?
Es ging doch ursprünglich darum, das Daten und Programm "so weit auseinander" liegen, wenn man die Windows-Vorgaben benutzt, also die 'Anwendungsdaten' Verzeichnisse verwenden. Die Idee von Iwo Asnet ist doch gut. Dann hat man gleich alles im Blick (Programme und Daten)
Dann bietet man in der eigenen Anwendung an, die Einstellungen 'für alle Benutzer' oder 'nur für sich selbst' zu speichern. Was nicht gehtm, ist eben ausgegraut, wenn man keine Zugriffsrechte hat. Wo ist denn da nun das Problem? Nicht Windows soll sich anpassen, sondern die Programmierer. |
AW: im Programmverzeichnis Datei ändern?
Trotz allem ist der Ordner AppData hier der richtige (auch wenn default nicht alle User dort Schreibrechte haben), denn bei der Installation kann man dafür sorgen, dass eben alle (genau) darauf Schreibrechte bekommen (oder halt nur auf bestimmte Dateien darin).
Also in CSIDL_COMMON_APPDATA\<Company>\<Product>\ die Anwendungsdaten für alle und die Berechtigungen anpassen. Und für die Benutzer-spezifischen Anwendungsdaten CSIDL_APPDATA\<Company>\<Product>\ |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Gruß K-H |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Zu AppData Ordner, ob privat oder öffentlich. Das Problem ist nicht MS, oder doch zum kleinen Teil, denn es fehlt eigentlich noch ein Ordner. In Dokumente speichere ich Dokumente, in AppData Einstellungen, wie sieht es aber z. B. mit den Bookmarks von Firefox oder der Postdatei von Outlook aus? Eigentlich kein Dokumente, aber doch mehr als eine Ini die die letzte Fenster-Position speichert. Und wo ist diese wichtige Datei gespeichert? In einem Ordner den der 08/15 Anwender nie im Leben finden wird, weil versteckt. Wenn man nicht zufällig ein Komplett-Backup macht, dann wird man bestimmt kein Backup von einem unsichtbaren Ordner machen. Hier fehlt also ein Zwischending. @Furtbichler Ich denke wir meinen das gleiche, reden aber aneinander vorbei. @Sir Rufo Zitat:
|
AW: im Programmverzeichnis Datei ändern?
Zitat:
|
AW: im Programmverzeichnis Datei ändern?
Zitat:
Die wird einmal eingerichtet (Rechte) und nach Bedarf werden die Nutzer dazu oder weg genommen. (das Problem hier sind doch nur die Entscheider die nicht entscheiden können wer was dürfen soll) Gruß K-H |
AW: im Programmverzeichnis Datei ändern?
Zitat:
Sicher, ich kann in meinem Programm eine Funktion einbauen die mir eine Gruppe mit Sonderrechten erstellt, vielleicht macht das auch ein Setupprogramm, dann binde ich es in alle bestehenden Konten ein, aber auch für alle zukünftig erstellten Konten, usw. usw. usw. Ich verstehe nicht auf was du eigentlich hinaus willst? Du lieferst für ein Problem zwar logische, aber dennoch billige Lösungen. Das ist wie: wenn sich Israelis und Iraner wieder lieb zu haben, dann wird es keinen Krieg geben. Das ist zwar logisch, daran ist nichts verkehrt, theoretisch würde es sogar funktionieren. Auch deine Lösung ist theoreisch möglich. Ich habe ein kleines Tool und damit es funktioniert greife ich tief in das System, erstelle Gruppen mit Sonderrechten, weise die den Konten zu, usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz