vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB611.10.02
Schreibschutz setzen/entfernen

In Verbindung mit der VBEx32.DLL lässt sich schnell und einfach der Schreibschutz eines gesamten Ordners setzen oder entfernen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  28.526 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Den Schreibschutz einer einzelnen Datei zu entfernen geht so:

Dim nAttr As Long
nAttr = (GetAttr(sFilename) And Not vbReadOnly)
SetAttr sFilename, nAttr

Der Schreibschutz eines Ordners (ohne Dateien) lässt sich wie folgt entfernen:

SetAttr sFolder, vbNormal

Was aber, wenn man den Schreibschutz eines Ordners inkl. aller darin enthaltenen Dateien und Unterordner entfernen möchte?

Nun ja, man entfernt zunächst den Schreibschutz des Ordners und ermittelt dann alle Unterordner mitsamt aller darin enthaltener Dateien.

Das ganze lässt sich z.B. über eine rekursive Funktion realisieren. Ich persönlich verwende für solche Zwecke sehr gerne die VBFOLDER... und VBFILE...-Funktionen unserer  VBEx32.DLL.

Und das Ergebnis sieht dann so aus:

Dim sFolders() As String
Dim nCount As Long
Dim i As Long
 
' Start-Ordner
Dim sPath As String
sPath = "d:\temp"
 
' Start-Ordner...
Folder_SetReadOnly sPath, False
 
' jetzt alle Unterordner ermitteln
nCount = VBEX_FolderCount(sPath, 1)
If nCount >= 0 Then
  ReDim Preserve sFolders(nCount)
  nCount = VBEX_FolderList(sPath, 1, sFolders())
 
  ' Array durchlaufen und Schreibschutz entfernen
  For i = 0 To nCount
    Folder_SetReadOnly sPath & sFolders(i), False
  Next i
End If
Private Sub Folder_SetReadOnly(ByVal sPath As String, _
  Optional ByVal bReadOnly = False)
 
  ' Schreibschutz aller Dateien eines Ordners
  ' setzen / entfernen
 
  Dim sFiles() As String
  Dim nCount As Long
  Dim i As Long
  Dim nBytes As Currency
  Dim nAttr As Long
 
  ' zunächst Schreibschutz des Ordners setzen/entfernen
  SetAttr sPath, IIf(bReadOnly, vbReadOnly, vbNormal)
 
  ' jetzt alle Dateien ermitteln
  nCount = VBEX_FileCount(sPath, 0, "*.*", nBytes)
  If nCount >= 0 Then
    ReDim Preserve sFiles(nCount)
    nCount = VBEX_FileList(sPath, 0, "*.*", sFiles(), nBytes)
 
    ' Array durchlaufen und Schreibschutz setzen/entfernen
    If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
    For i = 0 To nCount
      nAttr = (GetAttr(sPath & sFiles(i)))
      If bReadOnly Then
        nAttr = (nAttr Or vbReadOnly)
      Else
        nAttr = (nAttr And Not vbReadOnly)
      End If
      SetAttr sPath & sFiles(i), nAttr
    Next i
  End If
End Sub

Dieser Tipp wurde bereits 28.526 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel