ricson
Goto Top

VB Skript Löschen von Ordner funktioniert nicht

Servus zusammen !

ich versuche schon seit einiger Zeit, ein Skript zu schreiben, welches mir bestimmte User Profil Ordner lokal auf dem PC löscht.

Das ganze habe ich im Visual Studio gemacht, um später eine .exe graf. Anwendung nutzen zu können.

Wenn ich die Ordner mit meinen momentanen Berechtigungen (lokaler Administrator) per Hand lösche klappt das ohne Probleme. (also sollten die Berechtigungen ausreichend sein)

Mit meinem Skript meckert er rum, dass die Berechtigung nicht ausreicht ^^ Hier habe ich schon in verschiedenen Foren gesucht und getestet, aber über diese Hürde komme ich nicht hinweg:

Vllt. könnnt ihr mir helfen:

-- Das Skript prüft die Namen im Case, diese Profilordner sollen nicht gelöscht werden, die übrigen schon( in meinem Fall das Profil Test4) --


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click  ' Profile löschen  
        ListView1.Items.Clear()
        Label3.Text = ""  
        pfad = "C:\users\"  
        Timer1.Start()
        For Each ci As System.IO.DirectoryInfo In New System.IO.DirectoryInfo(pfad).GetDirectories()
            ProgressBar1.Value = 2
            secure = False
            Select Case ci.Name
                Case "All Users"  
                    secure = True
                Case "Default"  
                    secure = True
                Case "Default User"  
                    secure = True
                Case "Öffentlich"  
                    secure = True
                Case "Public"  
                    secure = True
                Case "LocalService"  
                    secure = True
                Case "NetworkService"  
                    secure = True
                Case "Administrator"  
                    secure = True
                Case "rwi"  
                    secure = True
                Case "admin"  
                    secure = True
                Case "Test1"  
                    secure = True
                Case "Test2"  
                    secure = True
                Case "Test3"  
                    secure = True
                Case Else
                    secure = False
            End Select
            With ListView1.Items
                Dim item As ListViewItem
                item = .Add(ci.Name)
                If secure = False Then item.SubItems.Add(TextBox1.Text) Else item.SubItems.Add(TextBox4.Text)
            End With

            If secure = False Then
               System.IO.Directory.Delete(pfad & ci.Name, True)
            End If
        Next
        ProgressBar1.Value = 100
        Label3.Text = "Vorgang erfolgreich abgeschlossen"  
    End Sub

vb_prob1

bei Ausführung der exe kommt ebenfalls Zugriff verweigert:

vb_prob2


Ich dachte, dass "System.IO.Directory.Delete(pfad & ci.Name, True)" dies übersteuern kann ...

Vielen Dank schon mal... face-smile

Content-Key: 373010

Url: https://administrator.de/contentid/373010

Printed on: April 19, 2024 at 19:04 o'clock

Mitglied: 136037
Solution 136037 May 04, 2018 updated at 07:09:00 (UTC)
Goto Top
Ist doch wie immer, erst mit Takeown den Ordner in Besitz nehmen und dann FULL Access ACLs drüber bügeln, oder mit Robocopy im Backup-Mode einen leeren Dummy-Ordner per /MIR auf den Ordner kippen, fertig!!

Auch wen du Admin bist, über die ACLs kannst du dich nicht einfach so hinwegsetzen. Also Besitz übernehmen und Zugriff ACLs setzen oder eben Robocopy den Vorgang für dich übernehmen lassen.

Einfachste Grundlagen von Windows ACLs.
Member: ricson
ricson May 04, 2018 at 08:03:11 (UTC)
Goto Top
Danke qaboos,

wie könnte man das mit VB umsetzen? (Takeown -> Full Access ACL´s)

Bin noch ganz frisch im Umgang mit VB face-smile

Danke
Member: Kraemer
Kraemer May 04, 2018 at 08:32:12 (UTC)
Goto Top
Zitat von @ricson:
Bin noch ganz frisch im Umgang mit VB face-smile
dann leg das mal bei Seite und fange an, die mit Suchmaschinen zu beschäftigen:

https://support.microsoft.com/de-de/help/318744/how-to-use-visual-basic- ...
Mitglied: 136037
Solution 136037 May 04, 2018 updated at 08:35:25 (UTC)
Goto Top
Oder eben per Process.Start takown und icacls ansprechen, fertig.