vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Besitzer/Owner eines Ordners rekursiv ändern 
Autor: Coolzero
Datum: 08.11.13 15:33

Coooool, ich antworte auf meinen eigenen Beitrag und bin sogar 1.

Also ich habe es jetzt mit einer (meiner Meinung nach) nicht ganz so schönen Lösung geschafft:
(hoffe aber weiterhin eine bessere zu finden)

PS: Die 5 KB Begrenzung ist ja mal ... ääähhh ... toll, zu mal die Vorschau funktioniert.
@Admin: Bitte Bugfixen

Imports System.IO
Imports System.Security.AccessControl
Imports System.Security.Principal
Imports System.Security
Imports System.Diagnostics
Imports ProcessPrivileges ' -> http://processprivileges.codeplex.com/
 
' http://support.microsoft.com/kb/318744/en-us
 
' Getestet: Funktioniert
' icacls c:\temp\test /setowner tietzma /T /C
 
Module Module1
 
	Sub Main()
		Debug.WriteLine("---=== START ===---")
 
		Dim p As Process = Process.GetCurrentProcess()
 
		Using New ProcessPrivileges.PrivilegeEnabler(p, Privilege.Backup)
			Using New ProcessPrivileges.PrivilegeEnabler(p, Privilege.Restore)
				Using New ProcessPrivileges.PrivilegeEnabler(p, Privilege.TakeOwnership)
 
					Dim dInfo As DirectoryInfo
					Dim dSec As DirectorySecurity
					Dim fInfo As FileInfo
					Dim fSec As FileSecurity
					Dim sNameAccount As IdentityReference = New NTAccount("corp.TRUMPF.com", _
  "tietzma")
 
					Dim startDir As String = "C:\Temp\Test\"
					Dim dirs As String() = Directory.GetDirectories(startDir, "*", _
  SearchOption.AllDirectories)
					Dim files As String() = Directory.GetFiles(startDir, "*", _
SearchOption.AllDirectories)
 
					' Zu erst dem Root den neuen Besitzer zuweisen
					dInfo = New DirectoryInfo(startDir)
					dSec = dInfo.GetAccessControl()
					dSec.SetOwner(sNameAccount)
					Directory.SetAccessControl(startDir, dSec)
 
					' ... dann allen Unterordnern
					For Each d As String In dirs
						dInfo = New DirectoryInfo(d)
						dSec = dInfo.GetAccessControl()
						dSec.SetOwner(sNameAccount)	'WindowsIdentity.GetCurrent().User)
						'dSec.SetAccessRuleProtection(False, True) ' -> Rekursives durchlaufen ???
						Directory.SetAccessControl(d, dSec)
					Next
 
					' Dann dem Root den User samt Rechten hinzufügen
					SetNTFSPermissions(startDir, sNameAccount.Value, _
  NTFSInherit.ThisFolderSubFoldersAndFiles, FileSystemRights.FullControl, _
  AccessControlType.Allow)
 
					' Den Besitzer auf alle Dateien in dem Ordner anwenden
					For Each f As String In files
						fInfo = New FileInfo(f)
						fSec = fInfo.GetAccessControl()
						fSec.SetOwner(sNameAccount)
						File.SetAccessControl(f, fSec)
 
						SetNTFSPermissions(f, sNameAccount.Value, _
  NTFSInherit.ThisFolderSubFoldersAndFiles, FileSystemRights.FullControl, _
  AccessControlType.Allow)
					Next
 
				End Using
			End Using
		End Using
 
		Console.ReadKey(False)
	End Sub

http://coolzero.aucb.de

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Besitzer/Owner eines Ordners rekursiv ändern2.686Coolzero08.11.13 14:12
Re: Besitzer/Owner eines Ordners rekursiv ändern2.107Coolzero08.11.13 15:33
Re: Besitzer/Owner eines Ordners rekursiv ändern Code Teil 21.801Coolzero08.11.13 15:33

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 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