Autor Beitrag
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 30.09.05 12:31 
Hi, gibt es eine Möglchkeit zu testen ob der Aktive Nutzer Schreibrechte/Leserechte (Leserechte hat man doch fast immer oder?) auf einen bestimmten ordner hat.

Am besten wäre

ausblenden Delphi-Quelltext
1:
2:
function ReadAccess(dir: String): boolean;
function WriteAccess(dir: String): boolean;


ausblenden Quelltext
1:
2:
'D:\Eigene Dateien': true
'C:\Windows\ readaccess: true, write: false


Hab im Forum bisher nur gefunden wie man auf Admin testen kann und einfach nen CreateFileA und datei erstellen und dann testen ob se erstellt wurde is net wirklich so das dolle

Reicht mir auch wenn nur jemand nen paar APIs in den raum wirft wo ich mal nachschauen könnte. danke

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 30.09.05 12:34 
uall@ogc Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 30.09.05 13:57 
Danke das hab ich gesucht.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 30.09.05 14:03 
Stammt von Nico aus der Delphipraxis, hat er dort gerade neulich mal gepostet. ;)
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 03.11.05 18:42 
www.luckie-online.de...CheckFileAccess.html
Verstehe ich das richtig, dass das von Win95 - WinMe und auch von WinXP nicht unterstützt wird, sondern nur von Win2000 und NT?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.11.05 20:38 
Wieso sollte es von XP nicht unterstützt werden? dass 95 - ME das nicht gehjt ist klar, da diese betriebssysteme ja keine Benutzer kennen.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 03.11.05 20:42 
Würde das zB. klappen:
Prüfen, ob Betriebssystem XP, NT oder 2000:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
JA:  //XP, NT, 2000
       Prüfen, ob Schreibzugriff auf eine Datei im Ordner ExtractFilePath(ParamStr(0) besteht
              JA:   Datei in ExtractFilePath(ParamStr(0) anlegen
              NEIN: Anwendungsdaten-Ordner verwenden

NEIN:  //Win98, Me oder sonstwas
       Datei in ExtractFilePath(ParamStr(0) anlegen

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.11.05 22:24 
Jupp. Aber warum nimmst du nicht gleich den Anwendungsdatenordner? Den gibt es unter Windows 9x auch.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Do 03.11.05 22:46 
user profile iconLuckie hat folgendes geschrieben:
Wieso sollte es von XP nicht unterstützt werden? dass 95 - ME das nicht gehjt ist klar, da diese betriebssysteme ja keine Benutzer kennen.

Ok, das beantwortet meine Frage! Xp also unterstützt es. Danke!

user profile iconLuckie hat folgendes geschrieben:
Jupp. Aber warum nimmst du nicht gleich den Anwendungsdatenordner? Den gibt es unter Windows 9x auch.

Ich möchte einfach beides möglich machen. Ich werde wahrscheinlich jetzt doch bald auf XP umsteigen (spät, aber doch!) und setze mich erstmal damit auseinander, einige meiner Programme ändern zu müssen.

Klar ist es sicherer, eingeschränkte statt volle (Schreib-)Rechte zu haben, aber als "ordentlicher", d.h., alle zum Programm gehörenden Dateien sind in einem Ordner, empfinde ich doch WinMe. Aber da hatten wir schon mal Diskussionen, und es geht mir nicht darum, was nun besser, sicherer, sinnvoller ist, sondern bloss darum, wie programmiere ich am Besten den Pfad, den mein Programm benutzt, welcher Ordner da in Frage kommt und wie ich den ermittle.

Ich muss bei praktisch allen meinen Programmen nur einmal, in der Create-Prozedur, den zu verwendenden Ordner ermitteln, denn ich verwende nicht ständig ExtractFilePath(ParamStr(0) im Quellcode, sondern eine Varible.

Ich möchte dazu die Funktion CheckAccessToFile benutzen, mit der ich teste, ob ich eine Datei zum Schreiben verwenden darf. Wenn ja, dann ExtractFilePath(ParamStr(0), wenn nein, dann Anwendungsdatenordner. So, denke ich, müsste es gehen.

Ob's wirklich funktioniert, werde ich ja dann unter XP sehen...

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.11.05 14:56 
Und was machst du, wenn mehrere Benutzer dein Programm benutzen? dann überschreiben die sich gegenseitig die Einstellungen, Termine und Daten. Wenn du das gemerkt hast, fängst du wieder von vorne an. Warum machst du es also nicht gleich richtig? Es geht nicht nur um Schreibrechte oder nicht, sondern auch um die verschiedenen Benutzer, die ein Programm benutzen.

Das www.luckie-online.de...rtikel/HOMEDIR.shtml solltest du dir mal durchlesen.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 04.11.05 17:19 
user profile iconLuckie hat folgendes geschrieben:
Und was machst du, wenn mehrere Benutzer dein Programm benutzen? dann überschreiben die sich gegenseitig die Einstellungen, Termine und Daten.

Bei Windowsversionen < XP ist das i.d.R. sowieso so, ausser, man programmiert eine Ordner-Auswahl-Option, bei XP, 2000, NT ist der Programmordner auch nur dann verfügbar, wenn man als Admin unterwegs ist, und ich könnte da wohl gleich den Anwendungsdaten-Ordner nehmen und darauf verzichten, zu prüfen, ob der User im Programmordner Schreibrechte besitzt.

Dazu aber eine Frage: Angenommen, es gibt nach dem Installieren eines Programmes zunächst nur eine Datei - die .exe. Wie setzt man da CheckAccessToFile sinnvoll ein? Zu prüfen, ob man in die .exe schreiben könnte, ist eher blosse Theorie - wer würde das schon machen? Ausserdem ist das bei einer geöffneten Datei wahrscheinlich sowieso problematisch. Aber irgendeine Datei muss man ja bei CheckAccessToFile angeben, und was tun, wenn's eben nur die .exe gibt? Der Versuch, eine Datei zu erzeugen, wird fehlschlagen, wenn man keine Schreibrechte besitzt, nur dann brauche ich ja CheckAccessToFile nicht...

Könnte mir jemand sagen, ob das sinnvoll ist oder Unsinn:
ausblenden Delphi-Quelltext
1:
2:
3:
if not CheckAccessToFile(GENERIC_WRITE, Application.HelpFile) then //... tu was
//oder
if not CheckAccessToFile(GENERIC_WRITE, ParamStr(0)) then //... tu was

Oder wie setzt man das ein?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.11.05 19:29 
Ich verstehe dein problem nicht. Leg deine Dateien im Anwendungsdatenordner des Benutzers ab und gut ist. Warum versuchst du auf biegen und brechen die Dsteien im Anwendungsordner zu speicher, wo sie erstmal nicht hingehören und du eben ziemliche Probleme mit Zugriffsrechten und verschiedenen Benutzern bekommst?
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 04.11.05 19:52 
user profile iconLuckie hat folgendes geschrieben:
Ich verstehe dein problem nicht. Leg deine Dateien im Anwendungsdatenordner des Benutzers ab und gut ist.

Ich will eben beide Optionen, unter WinMe läuft es eben auch so und damit will ich's behalten.

user profile iconLuckie hat folgendes geschrieben:
Warum versuchst du auf biegen und brechen die Dsteien im Anwendungsordner zu speicher, wo sie erstmal nicht hingehören

Die waren bis XP ja immer dort (wo auch sonst?). Das war schon unter DOS so, dann unter Win 3.1 und lief auch unter 95, 98 und Me noch. Ich werde die Dateien ja im Anwendungsdatenordner des Benutzers speichern, wenn nötig, aber wenn eben nicht nötig, soll alles bleiben können wie bisher. Nenn das nun Sturheit oder altmodisch, ich will's eben so. Ob das für irgendwas gut ist oder ich es später aus meinen Programmen rausschmeisse, weiss ich jetzt noch nicht. Jetzt ist mir nur wichtig, dass es zumindest funktionieren kann, wenn die Voraussetzungen stimmen (Admin-Rechte oder entsprechendes Betriebssystem). Ob sie dort hingehören oder nicht, ist mir dabei egal.

Wichtig ist mir nur, dass das Ganze dann auch funktionieren wird unter XP mit eingeschränkten Rechten. Dazu habe ich
eine Funktion geschrieben, die das alles abdeckt, inklusive der Möglichkeit, gleich den Anwendungsdatenordner des Benutzers zu verwenden. Dort kann dann noch ein Ordner erstellt werden, den das Programm benutzt.

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 04.11.05 21:06 
user profile icongalagher hat folgendes geschrieben:

Die waren bis XP ja immer dort (wo auch sonst?).

Das hat damit ja nichts zu tun. Windows XP ist e4ben ein Mehrbenutzersystem mit einer Benutzerverwaltung. Es ist was absolut neues und dem entsprechend muss man sich eben als Programmierer darauf einstellen.

Zitat:

Ich werde die Dateien ja im Anwendungsdatenordner des Benutzers speichern, wenn nötig, aber wenn eben nicht nötig, soll alles bleiben können wie bisher.

Warum das eine schlechte Entscheidung ist, habe ich dir schon zu genüge versucht klar zu machen.

Zitat:

Nenn das nun Sturheit oder altmodisch,

Ich nenne es einen Fehler. ;)

Zitat:

Jetzt ist mir nur wichtig, dass es zumindest funktionieren kann, wenn die Voraussetzungen stimmen (Admin-Rechte oder entsprechendes Betriebssystem). Ob sie dort hingehören oder nicht, ist mir dabei egal.

So lange das nur Programme für dich sind, OK, aber so bald du sie zum Download oder über Downloadporatle anbietest, sollten sie schon den Richtlinien entsprechen.

Zitat:

Wichtig ist mir nur, dass das Ganze dann auch funktionieren wird unter XP mit eingeschränkten Rechten. Dazu habe ich
eine Funktion geschrieben, die das alles abdeckt, inklusive der Möglichkeit, gleich den Anwendungsdatenordner des Benutzers zu verwenden. Dort kann dann noch ein Ordner erstellt werden, den das Programm benutzt.

[/quote]
Womit du es dir selber unnötig schwer machst.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Fr 04.11.05 22:11 
user profile iconLuckie hat folgendes geschrieben:

Das hat damit ja nichts zu tun. Windows XP ist e4ben ein Mehrbenutzersystem mit einer Benutzerverwaltung. Es ist was absolut neues und dem entsprechend muss man sich eben als Programmierer darauf einstellen.

Das tue ich ja. Es wird der Anwendungsdatenordner verwendet werden (müssen).

user profile icongalagher hat folgendes geschrieben:

Ich werde die Dateien ja im Anwendungsdatenordner des Benutzers speichern, wenn nötig, aber wenn eben nicht nötig, soll alles bleiben können wie bisher.
user profile iconLuckie hat folgendes geschrieben:

Warum das eine schlechte Entscheidung ist, habe ich dir schon zu genüge versucht klar zu machen.

Ja, vielleicht ist es - aus deiner, eurer oder aller Sicht - eine schlechte Entscheidung. Und vielleicht werde ich, wenn ich XP habe, auch so denken. Aber jetzt möchte ich, dass mein Programm das kann.

user profile iconLuckie hat folgendes geschrieben:

So lange das nur Programme für dich sind, OK, aber so bald du sie zum Download oder über Downloadporatle anbietest, sollten sie schon den Richtlinien entsprechen.

Tun sie ja. Im Wesentlichen. Nur bei Win9-Systemen nicht, wo's ja auch meiner Meinung nach Wurscht ist. Ich möchte mir die Möglichkeit des Programmordners einfach noch offen halten. Nebenbei: Ich habe im Anwendungsdaten-Ordner von Windows Me C:\WINDOWS\Anwendungsdaten gerade mal 11 Ordner. Offenbar benutzen den die anderen Programme ja auch nicht. Speichern ihre INI's einfach zum Teil sogar in C:\WINDOWS - was meine Programme nie tun.

Bei Win9-Systemen hat der Anwendungsdaten-Ordner ja auch keinen echten Sinn, oder? Vielleicht, wenn man mehrere Benutzer einrichtet, aber da bleibt dann immer noch das Problem der INI's im Windows-Ordner und wer weiss, was da noch alles ist und nicht hingehört.

user profile iconLuckie hat folgendes geschrieben:
Womit du es dir selber unnötig schwer machst.

Ja... :wink:

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 05.11.05 00:40 
user profile icongalagher hat folgendes geschrieben:
Nebenbei: Ich habe im Anwendungsdaten-Ordner von Windows Me C:\WINDOWS\Anwendungsdaten gerade mal 11 Ordner. Offenbar benutzen den die anderen Programme ja auch nicht. Speichern ihre INI's einfach zum Teil sogar in C:\WINDOWS - was meine Programme nie tun.

Das sind die Programme, die unter XP Ärger machen und bei mir sofort wieder von der Platte fliegen.

Zitat:

Bei Win9-Systemen hat der Anwendungsdaten-Ordner ja auch keinen echten Sinn, oder? Vielleicht, wenn man mehrere Benutzer einrichtet, aber da bleibt dann immer noch das Problem der INI's im Windows-Ordner und wer weiss, was da noch alles ist und nicht hingehört.

Windows 9x war nie als Mehrbenutzersystem konzipiert.
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 05.11.05 19:13 
user profile iconLuckie hat folgendes geschrieben:
Das sind die Programme, die unter XP Ärger machen und bei mir sofort wieder von der Platte fliegen.

Würde ich ja auch tun, wenn sie nicht korrekt funktionieren. Aber ich brauche nunmal einige von denen!

Da fällt mir ein: Word 97 erzeugt eine temporäre Datei im Ordner, in dem das Dokument ist, und praktisch alle .hlp-Dateien erzeugen eine versteckte .GID und eine .FTS-Datei in "ihrem" Ordner. Und, ja, ich weiss, es gibt jetzt eine neue Art von Hilfedateien, aber etliche Programme benutzen WinHelp.exe. Bedeutet das nun, nie auf F1 drücken zu dürfen?

Ok, Word 97 ist nicht gerade neu, aber es genügt mir, und ich sehe nicht ein, mir ein neues Programm kaufen zu müssen, nur weil Billy da was geändert hat und es nun nicht mehr wie bisher funktioniert. :evil: Und wie gesagt: ich will meine Programme im Wesentlichen behalten.

Die Vorteile der eingeschränkten Rechte liegen auf der Hand, klar, aber es bringt eben auch Nachteile. Bleibt die Frage offen: Gibt's mit XP wirklich weniger virenverseuchte PC's?

//Edit: Noch etwas: Ist das mit den eingeschränkten Rechten/mehreren Benutzern nur bei NTFS oder auch bei Fat32?

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Sa 05.11.05 19:39 
user profile icongalagher hat folgendes geschrieben:

//Edit: Noch etwas: Ist das mit den eingeschränkten Rechten/mehreren Benutzern nur bei NTFS oder auch bei Fat32?


Mehrere Benutzer gibts immer, Dateisystem hin oder her. Rechte auf Dateien und Verzeichnisse gibts aber nur mit NTFS - bei FAT kannst du die Daten der anderen Benutzer einsehen und ändern ;)

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
galagher
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Sa 05.11.05 21:05 
Danke erstmal für die Antworten!

@Luckie: Was mich jetzt noch interessiert, ist, wie man CheckAccessToFile korrekt einsetzt. Welche Datei soll man angeben, wenn es keine anderen als die .exe und eine .hlp gibt? Ist das im Prinzip egal? Leider kann ich die Funktion unter Win Me nicht testen - es erscheint bei
ausblenden Delphi-Quelltext
1:
2:
3:
 ShowMessage(BoolToStr(
  CheckAccessToFile(GENERIC_WRITE,
   FName), True)+':'+SysErrorMessage(GetLastError));

die Meldung "False: Die Funktion wird von diesem System nicht unterstützt".

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 06.11.05 19:09 
user profile icongalagher hat folgendes geschrieben:

Die Vorteile der eingeschränkten Rechte liegen auf der Hand, klar, aber es bringt eben auch Nachteile. Bleibt die Frage offen: Gibt's mit XP wirklich weniger virenverseuchte PC's?

Nenn mir mal Nachteile? Für mich ist es kein Nachteil, wenn der Programmierer gezwungen wird sauber zu programmiereren und sich an die Richtlinien des Betriebssystems zu halten.