Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Schreibschutz für Ordner setzen und aufheben (https://www.delphipraxis.net/162878-schreibschutz-fuer-ordner-setzen-und-aufheben.html)

simmi 8. Sep 2011 11:51

Schreibschutz für Ordner setzen und aufheben
 
Hallo,

ich möchte via ftp vom Server verschiedene Dateien in einem Ordner ablegen. Damit die Originalversionen der Dateien erhalten bleiben möchte ich den gesamten Ordner mit einem Schreibschutz versehen und für eine Aktualisierung der Dateien durch die Software den Schreibschutz aufheben können. Eine Kopie der Datei, die von der Software mit Daten gefüllt wird kann der Nutzer an einem anderen Ort speichern. Es handelt sich dabei um MS Officedateien (97-2010). Als Betriebssyteme werden nur XP und Win7 genutzt.:glaskugel:

Hat jemand eine Idee??

Luckie 8. Sep 2011 12:01

AW: Schreibschutz für Ordner setzen und aufheben
 
Rat mal was die Suche nach "schreibschutz" geliefert hat. ;)

himitsu 8. Sep 2011 12:09

AW: Schreibschutz für Ordner setzen und aufheben
 
Unterschiedliche FTP-Benutzer anlegen
- Einer mit ohne Schreibrechte für den normalen Zugriff
- Einer mit Schreibrechten, welchen das Updateprogramm verwendet

simmi 8. Sep 2011 12:11

AW: Schreibschutz für Ordner setzen und aufheben
 
Danke Luckie für diese äußerst hilfreiche Antwort

Es sind die gesamten Dokumentvorlagen des Unternehmens gepflegt nach DIN 9..., Es werden für verschiedene Projekte auch verschiedene Dokumentengruppen genutzt. Da läuft nach wie vor die BDE und die möchte ich weg bekommen. Meine Idee ist die, Ich habe eine MySQL Tabelle die Dokumentversionen, Zuordnungen und Dateinamen enthält, gleiche diese Daten mit dem lokalen Gerät bei bestehender Netzwerkverbindung ab und aktualisiere sie. Da die Rechner (Laptops) sich auch außerhalb unseres Intranets in dem der FTP Server läuft bewegen bracuhe ich einen lokalen Ordner.

Ich könnte jede Datei anfassen und den Schreibschutz setzen, aber ich würde mir gern diese Arbeit sparen und einfach einen Schreibschutz auf den gesamten Ordner setzen und natürlich wieder aufheben. Die vorhandenen Forumsbeiträge haben mir an dieser Stelle nicht wirklich helfen können.

hsg 8. Sep 2011 12:50

AW: Schreibschutz für Ordner setzen und aufheben
 
Da du XP und Win7 als BS hast, vermute ich mal, dass du NTFS als Dateisystem nutzt. Da kannst du doch allen Benutzern die Schreibrechte entziehen, nur ein spezieller Benutzer bekommt dann das Schreibrecht. Dein Programm muss dann nur als dieser Benutzer arbeiten und darf damit als einziges die Dateien bearbeiten.

simmi 8. Sep 2011 13:11

AW: Schreibschutz für Ordner setzen und aufheben
 
Zitat:

Dein Programm muss dann nur als dieser Benutzer arbeiten und darf damit als einziges die Dateien bearbeiten.
Das habe ich bereits versucht und wollte einem Programm Adminrechte geben, Windows 7 hat mir nur den dicken Daumen gezeigt. Zum anderen möchte mein Admin nicht, das da an den Nutzerrechten gestellt wird und er steht nun mal in der Nahrungskette über mir...

DeddyH 8. Sep 2011 13:13

AW: Schreibschutz für Ordner setzen und aufheben
 
Geht es jetzt ganz simpel um das Schreibschutz-Attribut?

simmi 8. Sep 2011 13:20

AW: Schreibschutz für Ordner setzen und aufheben
 
Mag für Dich ganz simpel sein, aber ich habe im Augenblick ein Brett vorm Kopf.

DeddyH 8. Sep 2011 13:28

AW: Schreibschutz für Ordner setzen und aufheben
 
Nur schnell heruntergetippt, enthält noch Verbesserungspotential:
Delphi-Quellcode:
procedure SetFileReadOnlyFlag(Directory: string; const mask: string = '*.*';
  Recursive: Boolean = false);
const
  faNewAnyFileEx = $00017FFF;
var
  Rec: TSearchRec;
begin
  Directory := IncludeTrailingPathDelimiter(Directory);
  if FindFirst(Directory + mask, faNewAnyFileEx, Rec) = 0 then
    try
      repeat
        if (Rec.Name <> '.') and (Rec.Name <> '..') then
          begin
            if (Rec.Attr and faDirectory) = faDirectory then
              begin
                if Recursive then
                  SetFileReadOnlyFlag(Directory + Rec.Name, mask, Recursive);
              end
            else
              FileSetAttr(Directory + Rec.Name, Rec.Attr or faReadOnly);
          end;
      until FindNext(Rec) <> 0;
    finally
      SysUtils.FindClose(Rec);
    end;
end;
Allerdings lässt sich der Schreibschutz im Normalfall mit 2 Mausklicks wieder entfernen, eine wirklich sichere Sache ist das also nicht.

Union 8. Sep 2011 13:30

AW: Schreibschutz für Ordner setzen und aufheben
 
Ich hab jetzt die logische Struktur bzgl. FTP nicht ganz verstanden. Wo liegt der FTP und wie wird auf das Virtuelle Verzeichnis zugegriffen?

simmi 8. Sep 2011 13:39

AW: Schreibschutz für Ordner setzen und aufheben
 
Hallo DeddyH,

kenne "IncludeTrailingPathDelimiter" nicht, wo kommt das her?

Es geht auch nicht um einen absoluten Schutz, sondern nur darum, das die Kollegen nicht einfach das Symbol speichern klicken und damit die Vorlage zerstören. Arbeiten sollen Sie ja mit den Dokumenten. Funktionierte bisher auch ganz gut nur ich will weg von der BDE und suche darum eine andere Lösung...

DeddyH 8. Sep 2011 13:41

AW: Schreibschutz für Ordner setzen und aufheben
 
Das steht in SysUtils und hängt ggf. das Ordner-Trennzeichen (also den Backslash unter Windows) an den übergebenen String an.

himitsu 8. Sep 2011 14:35

AW: Schreibschutz für Ordner setzen und aufheben
 
Man hätte ja auch mal ie OH fragen können?
Delphi-Referenz durchsuchenIncludeTrailingPathDelimiter (neu) oder Delphi-Referenz durchsuchenIncludeTrailingBackslash (alt)

Achtung:
  • Das Schreibschutzattribut von Verzeichnissen hat mit Schreibschutzt nichts zu tun.
  • Das Schreibschutzattribut von Dateien ist ein "Kann"-Attribut welches vom (Datei)System nicht geprüft wird.
    Programme müssen/können es selber beachten, wenn sie auf eine Datei zugreifen ... sie müssen es aber nicht beachten und können dennoch schreiben.
  • Der FTP-Server muß nicht auf diese Attribute achten, er könnte auch seine eigene Rechteverwaltung implementieren.
    Vorallem da diese Windows-Dateiatribute nichts mit den FTP-Zugriffattributen gemeinsam haben.

p80286 8. Sep 2011 14:35

AW: Schreibschutz für Ordner setzen und aufheben
 
Zitat:

Zitat von simmi (Beitrag 1122654)
Zitat:

Dein Programm muss dann nur als dieser Benutzer arbeiten und darf damit als einziges die Dateien bearbeiten.
Das habe ich bereits versucht und wollte einem Programm Adminrechte geben, Windows 7 hat mir nur den dicken Daumen gezeigt. Zum anderen möchte mein Admin nicht, das da an den Nutzerrechten gestellt wird und er steht nun mal in der Nahrungskette über mir...

Ich glaube da hast Du etwas mißverstanden. Unter NTFS kannst du einem Benutzer und/oder einer Benutzergruppe "Dateiberechtigungen" geben und/oder entziehen. Das hat nichts mit Adminrechten zu tun.
Schau mal unter "Eigenschaften -> Sicherheit" des Verzeichnisses nach was da eingestellt ist.
Neben den üblichen Verdächtigen würde ich Leserechte für "Jeder" vergeben und Änderungsrechte für den/die Admin(s)/Datenpfleger.
Vererbung nicht vergessen, fertig ist die Laube

Gruß
K-H

jfheins 8. Sep 2011 14:39

AW: Schreibschutz für Ordner setzen und aufheben
 
Zitat:

Zitat von simmi (Beitrag 1122639)
Es sind die gesamten Dokumentvorlagen des Unternehmens gepflegt nach DIN 9..., Es werden für verschiedene Projekte auch verschiedene Dokumentengruppen genutzt. Da läuft nach wie vor die BDE und die möchte ich weg bekommen. Meine Idee ist die, Ich habe eine MySQL Tabelle die Dokumentversionen, Zuordnungen und Dateinamen enthält, gleiche diese Daten mit dem lokalen Gerät bei bestehender Netzwerkverbindung ab und aktualisiere sie. Da die Rechner (Laptops) sich auch außerhalb unseres Intranets in dem der FTP Server läuft bewegen bracuhe ich einen lokalen Ordner.

Das klingt ziemlich nach dem Einsatzgebiet eines SVN Servers. Der SVN Server ist dazu designet, dass es auf keinen Fall zum Datenverlust kommt. (Hardwarefehler ausgenommen) und ermöglicht eine synchronisierung in beide Richtungen. Du kannst auch Benutzerrechte anlegen, dass die meisten nur vom Server ziehen dürfen, aber nichts auf dem Server ändern dürfen.
Versionierung ist natürlich auch dabei.

Guck's dir zumindest mal an ;-)

DP-Maintenance 9. Sep 2011 12:30

Dieses Thema wurde am "09. Sep 2011, 13:30 Uhr" von "MrSpock" aus dem Forum "Neuen Beitrag zur Code-Library hinzufügen" in das Forum "Win32/Win64 API (native code)" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 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