Abfrage lokaler Gruppenmitgliedschaften in Windows - Bug umschiffen
Moin Kollegen.
Wer schon auf Betriebstemperatur ist und ein forderndes Problem sucht ...
Mit dem Powershell-Kommando
bekommt man normalerweise die Mitglieder der lokalen Admingruppe angezeigt.
Hat man den PC jedoch zu irgendeinem Zeitpunkt aus der Domäne genommen und wieder hinzugefügt, kann hier ein Bug auftreten, der seit Jahren ungelöst ist.
Siehe https://github.com/PowerShell/PowerShell/issues/2996
Der Witz ist: alles funktioniert - alle gewünschten Admins sind nutzbar als solche und auch das Oldschool-Kommando net localgroup administratoren födert die richtigen Mitglieder zu Tage - lediglich das Powershell-Kommando zickt rum.
Auch ist keine verwaiste SID bei Ansicht in netplwiz.exe zu finden, was bei einigen Personen aus verlinktem Thread die Ursache war.
Somit grabe ich tiefer und finde alte SIDs unter
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220
nun zur Frage: wie bereinige ich die dort? Es gelingt zwar, von einem jungfräulichen System einfach diesen Zweig zu importieren - danach funktionieren jedoch die lokalen Admins nicht mehr.
Wer Lust hat auf diese Frage kann das Problem wie gesagt bei sich selbst in einer VM erzeugen, indem er zum Beispiel so vorgeht, wie im Link beschrieben:
Eine Domänengruppe in die lokale Admingruppe nehmen
VM aus der Domäne nehmen
get-localgroupmembers -group administratoren
laufen lassen
Wer schon auf Betriebstemperatur ist und ein forderndes Problem sucht ...
Mit dem Powershell-Kommando
Get-LocalGroupMember -Group administratoren
Hat man den PC jedoch zu irgendeinem Zeitpunkt aus der Domäne genommen und wieder hinzugefügt, kann hier ein Bug auftreten, der seit Jahren ungelöst ist.
Siehe https://github.com/PowerShell/PowerShell/issues/2996
Der Witz ist: alles funktioniert - alle gewünschten Admins sind nutzbar als solche und auch das Oldschool-Kommando net localgroup administratoren födert die richtigen Mitglieder zu Tage - lediglich das Powershell-Kommando zickt rum.
Auch ist keine verwaiste SID bei Ansicht in netplwiz.exe zu finden, was bei einigen Personen aus verlinktem Thread die Ursache war.
Somit grabe ich tiefer und finde alte SIDs unter
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220
nun zur Frage: wie bereinige ich die dort? Es gelingt zwar, von einem jungfräulichen System einfach diesen Zweig zu importieren - danach funktionieren jedoch die lokalen Admins nicht mehr.
Wer Lust hat auf diese Frage kann das Problem wie gesagt bei sich selbst in einer VM erzeugen, indem er zum Beispiel so vorgeht, wie im Link beschrieben:
Eine Domänengruppe in die lokale Admingruppe nehmen
VM aus der Domäne nehmen
get-localgroupmembers -group administratoren
laufen lassen
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 538099
Url: https://administrator.de/contentid/538099
Ausgedruckt am: 24.11.2024 um 03:11 Uhr
25 Kommentare
Neuester Kommentar
Moin,
Somit grabe ich tiefer und finde alte SIDs unter
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220
Ich find's erstaunlich, dass da etwas eingetragen ist, denn bei mir ist dieser Baum leer und endet auch so:
HKEY_LOCAL_MACHINE\SAM\SAM
Ich habe extra auf mehreren Domänen-PCs geschaut.
nun zur Frage: wie bereinige ich die dort? Es gelingt zwar, von einem jungfräulichen System einfach diesen Zweig zu importieren - danach funktionieren jedoch die lokalen Admins nicht mehr.
Dazu müsstest Du wahrscheinlich auch die SAM-Datei unter c:\windows\system32\config mit übernehmen.
Zitat von @beidermachtvongreyscull:
Ich find's erstaunlich, dass da etwas eingetragen ist, denn bei mir ist dieser Baum leer und endet auch so:
HKEY_LOCAL_MACHINE\SAM\SAM
Ich find's erstaunlich, dass da etwas eingetragen ist, denn bei mir ist dieser Baum leer und endet auch so:
HKEY_LOCAL_MACHINE\SAM\SAM
Nö, das ist vollkommen normal, denn du musst dir erst Leserechte für den Subtree verpassen erst dann siehst du die Unterordner . DIE SAM ist besonders geschützt und ist in diesem Pfad eingehangen, per Default haben Administratoren dort keinen direkten Lesezugriff, deswegen musst du dir dort erst selbst die Rechte vergeben.
Ich habe das mal exakt so nachgestellt und dann in der lokalen Computerverwaltung einfach die unaufgelösten Einträge gelöscht, danach ging es hier wieder einwandfrei mit Get-LocalGroupMember!
netplwiz wie du oben geschrieben hast ist nicht die Anzeige der Computerverwaltung . In netplwiz war bei mir auch nichts zu sehen, aber in der Computerverwaltung schon, deswegen mein Einwand!
Also ich hab mal ein Compare der SAM vorher/nachher erstellt, dabei ist folgendes Aufgefallen
Die markierte SID war die der ehemaligen Domain. Diesen Schlüssel habe ich nun komplett aus der SAM gelöscht, das reicht aber nicht. Zusätzlich musste ich im Subkey 00000220 also dem Key der der Gruppe Administratoren entspricht im Eintrag C zwei Byte verändern und zwar das Byte 45 auf HEX 38 und das Byte 49 auf HEX 02 . Danach lief es wieder einwandfrei. Kannst es ja mal probieren. Die Werte variieren je nach Anzahl an Gruppenmitgliedern-
Die markierte SID war die der ehemaligen Domain. Diesen Schlüssel habe ich nun komplett aus der SAM gelöscht, das reicht aber nicht. Zusätzlich musste ich im Subkey 00000220 also dem Key der der Gruppe Administratoren entspricht im Eintrag C zwei Byte verändern und zwar das Byte 45 auf HEX 38 und das Byte 49 auf HEX 02 . Danach lief es wieder einwandfrei. Kannst es ja mal probieren. Die Werte variieren je nach Anzahl an Gruppenmitgliedern-
Zitat von @DerWoWusste:
aber nicht in meinem realen Fall, dort ist lediglich in dem genannten Registrypfad mehr drin als dort hingehört - und den bekomme ich nicht gescheit modifiziert.
Was ist da noch zusätzlich drin außer dem C-Wert? Im C-Binary stehen die SIDs auch alle drin.aber nicht in meinem realen Fall, dort ist lediglich in dem genannten Registrypfad mehr drin als dort hingehört - und den bekomme ich nicht gescheit modifiziert.
Wir können ja nicht helfen wenn wir nicht wissen was nur bei dir schief ist. Ich hab hier nämlich nur den C-Wert in o.g. Ordner und sonst nichts. Für das C-Binary habe ich mir mal eine Byte-Schablone erstellt falls du sie haben möchtest.
Zitat von @142232:
Nö, das ist vollkommen normal, denn du musst dir erst Leserechte für den Subtree verpassen erst dann siehst du die Unterordner . DIE SAM ist besonders geschützt und ist in diesem Pfad eingehangen, per Default haben Administratoren dort keinen direkten Lesezugriff, deswegen musst du dir dort erst selbst die Rechte vergeben.
Zitat von @beidermachtvongreyscull:
Ich find's erstaunlich, dass da etwas eingetragen ist, denn bei mir ist dieser Baum leer und endet auch so:
HKEY_LOCAL_MACHINE\SAM\SAM
Ich find's erstaunlich, dass da etwas eingetragen ist, denn bei mir ist dieser Baum leer und endet auch so:
HKEY_LOCAL_MACHINE\SAM\SAM
Nö, das ist vollkommen normal, denn du musst dir erst Leserechte für den Subtree verpassen erst dann siehst du die Unterordner . DIE SAM ist besonders geschützt und ist in diesem Pfad eingehangen, per Default haben Administratoren dort keinen direkten Lesezugriff, deswegen musst du dir dort erst selbst die Rechte vergeben.
Danke für den Augenöffner. Das hatte ich nicht auf dem Schirm.
Wenn du die SIDs löschst musst du erstens den Offset und die Länge des Bereichs für die SIDs im Header (erste 52 Bytes) anpassen und ebenfalls den Counter an die Anzahl der User (ebenfalls im Header), wenn die SID (28Bytes) zwischen anderen SIDs stand müssen die nachfolgenden SIDs auch aufrücken, der Bereich darf nicht leer sein!
Hier siehst du die Infos der Offsets der genannten Details im Header
https://computer.forensikblog.de/en/2006/02/list-members-of-a-windows-gr ...
Hier siehst du die Infos der Offsets der genannten Details im Header
https://computer.forensikblog.de/en/2006/02/list-members-of-a-windows-gr ...
-edit- 27.01.2020 - Bitte das zweite Skript weiter unten benutzen wenn ihr nicht explizit eine SID angeben könnt/wollt die entfernt werden soll, das macht das zweite Skript nämlich automatisch.
Servus DWW,
hab dir das mal schnell in nem PS Skript zusammen geschrotet, teste mal ...
(zu entfernende SID oben in der Variablen $exclude eintragen)
<#
DOMAIN REJOIN GROUP MEMBER LEFTOVER FIX
!! only use this script version if you want to remove 'a user specific SID' from the SAM entry otherwise use the second script on this page !!
#>
# SID to exclude
$exclude = 'S-1-5-21-3436018609-1888576025-3894982363-1008'
# ====================================
# check elevation
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
if (!$myWindowsPrincipal.IsInRole($adminRole)){
# elevate
start-process "powershell" -Verb "runas" -ArgumentList "-File",$MyInvocation.MyCommand.Definition
exit
}
# elevated area ------
# Gain permission to SAM
# privilege token adjustment
$nttools = Add-Type -Member '[DllImport("ntdll.dll")] public static extern int RtlAdjustPrivilege(ulong a, bool b, bool c, ref bool d);' -Name nttools -PassThru
9,17,18 | %{$nttools::RtlAdjustPrivilege($_, 1, 0, [ref]0) | out-null}
$regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SAM\SAM", 'ReadWriteSubTree', 'ChangePermissions')
$acl = $regkey.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule([System.Security.Principal.SecurityIdentifier]'S-1-5-32-544', 'FullControl',"ContainerInherit,ObjectInherit","None",'Allow')
$acl.SetAccessRule($rule)
$regKey.SetAccessControl($acl)
$regKey.Close()
# get binary from SAM
[byte[]]$bytes = (Get-ItemProperty 'HKLM:\SAM\SAM\Domains\Builtin\Aliases\00000220' -Name C).C
# offset position of sids
$os = [bitconverter]::ToUInt32($bytes[40..43],0) + 52
# length of sid area
$count = [bitconverter]::ToUInt32($bytes[44..47],0)
# extract sid area
[byte[]]$memberbytes = $bytes[$os..($os+$count)]
# filter out sid
[byte[]]$newmemberbytes = 0..(($memberbytes.Count / 28)-1) | ?{(New-Object System.Security.Principal.SecurityIdentifier ([byte[]]$memberbytes[($_*28)..(($_*28)+27)]),0) -ne ([System.Security.Principal.SecurityIdentifier]$exclude) } | %{[byte[]]$memberbytes[($_*28)..(($_*28)+27)]}
# update members area length in header
[bitconverter]::GetBytes($newmemberbytes.count).CopyTo($bytes,44)
# update membercount in header
[bitconverter]::GetBytes(($newmemberbytes.count / 28)).CopyTo($bytes,48)
# write back data
Set-ItemProperty 'HKLM:\SAM\SAM\Domains\Builtin\Aliases\00000220' -Name C -Value ([byte[]]($bytes[0..($os-1)] + $newmemberbytes)) -Force | out-null
# restore permissions
$regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SAM\SAM", 'ReadWriteSubTree', 'ChangePermissions')
$acl = $regKey.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule([System.Security.Principal.SecurityIdentifier]'S-1-5-32-544','ReadPermissions,ChangePermissions','ContainerInherit,ObjectInherit','None','Allow')
$acl.SetAccessRule($rule)
$regKey.SetAccessControl($acl)
$regKey.Close()
write-host "FIX done." -F Green
read-host "Press enter to exit script."
Grüße Uwe
Freut mich für dich/euch.
Hab's mit dem folgenden Skript noch etwas angepasst so das man die SID nicht zwingend manuell angeben muss. Das Skript übernimmt nur diejenigen SID's die Windows auch zu einem gültigen Account auflösen kann. Voraussetzung ist natürlich das zum Zeitpunkt an dem das Skript angewendet wird alle Domains erreichbar sein müssen, denn sonst werden alle Domain-SIDs rausgeworfen.
(Restore der Permissions habe ich auch noch ergänzt)
Hab's mit dem folgenden Skript noch etwas angepasst so das man die SID nicht zwingend manuell angeben muss. Das Skript übernimmt nur diejenigen SID's die Windows auch zu einem gültigen Account auflösen kann. Voraussetzung ist natürlich das zum Zeitpunkt an dem das Skript angewendet wird alle Domains erreichbar sein müssen, denn sonst werden alle Domain-SIDs rausgeworfen.
(Restore der Permissions habe ich auch noch ergänzt)
<#
DOMAIN REJOIN GROUP MEMBER LEFTOVER FIX
(removes all non resolvable SIDs)
#>
# check elevation
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
if (!$myWindowsPrincipal.IsInRole($adminRole)){
# elevate
start-process "powershell" -Verb "runas" -ArgumentList "-File",$MyInvocation.MyCommand.Definition
exit
}
# elevated area ------
# Gain permission to SAM
# privilege token adjustment
$nttools = Add-Type -Member '[DllImport("ntdll.dll")] public static extern int RtlAdjustPrivilege(ulong a, bool b, bool c, ref bool d);' -Name nttools -PassThru
9,17,18 | %{$nttools::RtlAdjustPrivilege($_, 1, 0, [ref]0) | out-null}
$regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SAM\SAM", 'ReadWriteSubTree', 'ChangePermissions')
$acl = $regkey.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule([System.Security.Principal.SecurityIdentifier]'S-1-5-32-544', 'FullControl',"ContainerInherit,ObjectInherit","None",'Allow')
$acl.SetAccessRule($rule)
$regKey.SetAccessControl($acl)
$regKey.Close()
# get binary from SAM
[byte[]]$bytes = (Get-ItemProperty 'HKLM:\SAM\SAM\Domains\Builtin\Aliases\00000220' -Name c).c
# offset position of sids
$os = [bitconverter]::ToUInt32($bytes[40..43],0) + 52
# length of sid area
$count = [bitconverter]::ToUInt32($bytes[44..47],0)
# extract sid area
[byte[]]$memberbytes = $bytes[$os..($os+$count)]
# filter out non resolvable sids
[byte[]]$newmemberbytes = 0..(($memberbytes.Count / 28)-1) | ?{try{(New-Object System.Security.Principal.SecurityIdentifier ([byte[]]$memberbytes[($_*28)..(($_*28)+27)]),0).Translate([System.Security.Principal.NTAccount]);$true}catch{$false}} | %{[byte[]]$memberbytes[($_*28)..(($_*28)+27)]}
# update members area length in header
[bitconverter]::GetBytes($newmemberbytes.count).CopyTo($bytes,44)
# update membercount in header
[bitconverter]::GetBytes(($newmemberbytes.count / 28)).CopyTo($bytes,48)
# write back data
Set-ItemProperty 'HKLM:\SAM\SAM\Domains\Builtin\Aliases\00000220' -Name C -Value ([byte[]]($bytes[0..($os-1)] + $newmemberbytes)) -Force | out-null
# restore permissions
$regKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SAM\SAM", 'ReadWriteSubTree', 'ChangePermissions')
$acl = $regKey.GetAccessControl()
$rule = New-Object System.Security.AccessControl.RegistryAccessRule([System.Security.Principal.SecurityIdentifier]'S-1-5-32-544','ReadPermissions,ChangePermissions','ContainerInherit,ObjectInherit','None','Allow')
$acl.SetAccessRule($rule)
$regKey.SetAccessControl($acl)
$regKey.Close()
write-host "FIX done." -F Green
read-host "`nPress enter to exit script"
Zitat von @LeeX01:
Wie genau also mit welchen Programmen/Methoden bist du aus dem Hex zu der SID gekommen?
Servus,Wie genau also mit welchen Programmen/Methoden bist du aus dem Hex zu der SID gekommen?
das .NET, genauer gesagt ein Konstruktor der Klasse System.Security.Principal.SecurityIdentifier hilft dir dabei. dem kann man ein Byte-Array der SID übergeben, daraus macht .NET dann das SID-Object in der du die SID im Klartext erhältst. Du musst also nur dein HEX in ein Byte-Array wandeln und dem Kontruktor übergeben.
New-Object System.Security.Principal.SecurityIdentifier ([byte[]]([regex]::matches('010500000000000515000000b17bcdcc19629170dbb628e8f0030000','..').Value | %{[System.Convert]::ToUInt32($_,16)})),0
Ergebnis-Object:
BinaryLength AccountDomainSid Value
------------ ---------------- -----
28 S-1-5-21-3436018609-1888576025-3894982363 S-1-5-21-3436018609-1888576025-3894982363-1008
Hi Uwe,
wenn ich das richtig sehe hast du da aber schon die nötigen hexwerte extrahiert und gibst die in dem Bytearray an oder? Aber wie komme ich von
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220]
"C"=hex:20,02,00,00,00,00,00,00,d0,00,00,00,03,00,01,00,d0,00,00,00,1c,00,00,\
00,00,00,00,00,ec,00,00,00,96,00,00,00,00,00,00,00,84,01,00,00,8c,00,00,00,\
05,00,00,00,01,00,14,80,b0,00,00,00,c0,00,00,00,14,00,00,00,44,00,00,00,02,\
00,30,00,02,00,00,00,02,c0,14,00,13,00,05,01,01,01,00,00,00,00,00,01,00,00,\
00,00,02,c0,14,00,ff,ff,1f,00,01,01,00,00,00,00,00,05,07,00,00,00,02,00,6c,\
00,03,00,00,00,00,00,14,00,0c,00,02,00,01,01,00,00,00,00,00,01,00,00,00,00,\
00,00,18,00,1f,00,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,\
00,38,00,0c,00,02,00,01,0a,00,00,00,00,00,0f,03,00,00,00,00,04,00,00,de,a2,\
28,67,21,3e,d2,af,19,ad,5d,79,b0,c1,07,29,27,56,fc,20,d8,ad,66,f6,10,f2,68,\
fa,df,2a,f8,0f,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,\
00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,69,00,6e,00,69,00,73,\
00,74,00,72,00,61,00,74,00,6f,00,72,00,73,00,41,00,64,00,6d,00,69,00,6e,00,\
69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,73,00,20,00,68,00,61,00,76,\
00,65,00,20,00,63,00,6f,00,6d,00,70,00,6c,00,65,00,74,00,65,00,20,00,61,00,\
6e,00,64,00,20,00,75,00,6e,00,72,00,65,00,73,00,74,00,72,00,69,00,63,00,74,\
00,65,00,64,00,20,00,61,00,63,00,63,00,65,00,73,00,73,00,20,00,74,00,6f,00,\
20,00,74,00,68,00,65,00,20,00,63,00,6f,00,6d,00,70,00,75,00,74,00,65,00,72,\
00,2f,00,64,00,6f,00,6d,00,61,00,69,00,6e,00,1a,18,01,05,00,00,00,00,00,05,\
15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,b6,28,e8,f4,01,00,00,01,05,00,00,00,\
00,00,05,15,00,00,00,18,c2,d0,a4,1e,89,2c,7f,46,aa,28,54,00,02,00,00,01,05,\
00,00,00,00,00,05,15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,b6,28,e8,eb,03,00,\
00,01,05,00,00,00,00,00,05,15,00,00,00,18,c2,d0,a4,1e,89,2c,7f,46,aa,28,54,\
03,16,00,00,01,05,00,00,00,00,00,05,15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,\
b6,28,e8,f0,03,00,00
zu '010500000000000515000000b17bcdcc19629170dbb628e8f0030000' ?
wenn ich das richtig sehe hast du da aber schon die nötigen hexwerte extrahiert und gibst die in dem Bytearray an oder? Aber wie komme ich von
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\00000220]
"C"=hex:20,02,00,00,00,00,00,00,d0,00,00,00,03,00,01,00,d0,00,00,00,1c,00,00,\
00,00,00,00,00,ec,00,00,00,96,00,00,00,00,00,00,00,84,01,00,00,8c,00,00,00,\
05,00,00,00,01,00,14,80,b0,00,00,00,c0,00,00,00,14,00,00,00,44,00,00,00,02,\
00,30,00,02,00,00,00,02,c0,14,00,13,00,05,01,01,01,00,00,00,00,00,01,00,00,\
00,00,02,c0,14,00,ff,ff,1f,00,01,01,00,00,00,00,00,05,07,00,00,00,02,00,6c,\
00,03,00,00,00,00,00,14,00,0c,00,02,00,01,01,00,00,00,00,00,01,00,00,00,00,\
00,00,18,00,1f,00,0f,00,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,00,\
00,38,00,0c,00,02,00,01,0a,00,00,00,00,00,0f,03,00,00,00,00,04,00,00,de,a2,\
28,67,21,3e,d2,af,19,ad,5d,79,b0,c1,07,29,27,56,fc,20,d8,ad,66,f6,10,f2,68,\
fa,df,2a,f8,0f,01,02,00,00,00,00,00,05,20,00,00,00,20,02,00,00,01,02,00,00,\
00,00,00,05,20,00,00,00,20,02,00,00,41,00,64,00,6d,00,69,00,6e,00,69,00,73,\
00,74,00,72,00,61,00,74,00,6f,00,72,00,73,00,41,00,64,00,6d,00,69,00,6e,00,\
69,00,73,00,74,00,72,00,61,00,74,00,6f,00,72,00,73,00,20,00,68,00,61,00,76,\
00,65,00,20,00,63,00,6f,00,6d,00,70,00,6c,00,65,00,74,00,65,00,20,00,61,00,\
6e,00,64,00,20,00,75,00,6e,00,72,00,65,00,73,00,74,00,72,00,69,00,63,00,74,\
00,65,00,64,00,20,00,61,00,63,00,63,00,65,00,73,00,73,00,20,00,74,00,6f,00,\
20,00,74,00,68,00,65,00,20,00,63,00,6f,00,6d,00,70,00,75,00,74,00,65,00,72,\
00,2f,00,64,00,6f,00,6d,00,61,00,69,00,6e,00,1a,18,01,05,00,00,00,00,00,05,\
15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,b6,28,e8,f4,01,00,00,01,05,00,00,00,\
00,00,05,15,00,00,00,18,c2,d0,a4,1e,89,2c,7f,46,aa,28,54,00,02,00,00,01,05,\
00,00,00,00,00,05,15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,b6,28,e8,eb,03,00,\
00,01,05,00,00,00,00,00,05,15,00,00,00,18,c2,d0,a4,1e,89,2c,7f,46,aa,28,54,\
03,16,00,00,01,05,00,00,00,00,00,05,15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,\
b6,28,e8,f0,03,00,00
zu '010500000000000515000000b17bcdcc19629170dbb628e8f0030000' ?
Hiervon aus dem Regedit Part einfach die Komma's den Slash und Leerzeichen entfernen und oben an den PS Schnippsel verfüttern, eine SID wird ja üblicherweise in 28 Byte dargestellt.
Wie und aus welchen Teilen eine SID üblicherweise besteht kannst du hier nachschlagen
http://www.selfadsi.de/deep-inside/microsoft-sid-attributes.htm
Die Offsets und die Lange ab denen die SIDs im HEX stehen lese ich aus dem 52 Byte Header des HEX Werts aus. Die genauen Offsets kannst du in meinem PS Code erkennen. Hier liegen die SIDs alle immer am Ende des HEX-Bereiches. Der Bereich in dem die SIDs beginnen, berechnet sich aus 52 Byte Header + SID-AREA-Offset
01,05,00,00,00,00,00,05,15,00,00,00,b1,7b,cd,cc,19,62,91,70,db,\
b6,28,e8,f0,03,00,00
b6,28,e8,f0,03,00,00
Wie und aus welchen Teilen eine SID üblicherweise besteht kannst du hier nachschlagen
http://www.selfadsi.de/deep-inside/microsoft-sid-attributes.htm
Die Offsets und die Lange ab denen die SIDs im HEX stehen lese ich aus dem 52 Byte Header des HEX Werts aus. Die genauen Offsets kannst du in meinem PS Code erkennen. Hier liegen die SIDs alle immer am Ende des HEX-Bereiches. Der Bereich in dem die SIDs beginnen, berechnet sich aus 52 Byte Header + SID-AREA-Offset
Danke für den Link und die Erklärung , das muss ich mir in ner ruhigen Minute mal genauer ansehen.
Edit:
Ich denke was mich etwas irretiert hat ist das du in deinem 1. Script eine SID fürs Exclude angibts. Die kannst du im Normalfall aber noch gar nicht wissen (falls sie nicht unaufgelöst in der Userverwaltung steht) weil die im Hex steht was das Script erst zerlegt. Oder sieht man die SID in einem Screenshot in der Fehlermeldung?
Beste Grüße
Edit:
Ich denke was mich etwas irretiert hat ist das du in deinem 1. Script eine SID fürs Exclude angibts. Die kannst du im Normalfall aber noch gar nicht wissen (falls sie nicht unaufgelöst in der Userverwaltung steht) weil die im Hex steht was das Script erst zerlegt. Oder sieht man die SID in einem Screenshot in der Fehlermeldung?
Beste Grüße
Zitat von @LeeX01:
Edit:
Ich denke was mich etwas irretiert hat ist das du in deinem 1. Script eine SID fürs Exclude angibts. Die kannst du im Normalfall aber noch gar nicht wissen (falls sie nicht unaufgelöst in der Userverwaltung steht) weil die im Hex steht was das Script erst zerlegt. Oder sieht man die SID in einem Screenshot in der Fehlermeldung?
Das erste Skript war eigentlich nur ein Schnellschuss und für DWW gedacht für den Fall das man die SID selbst angeben will welche entfernt werden soll, das zweite Skript dagegen entfernt automatisch alle nicht auflösbaren SIDs! Bitte die Kommentare über den Skripten lesen, DANKE!Edit:
Ich denke was mich etwas irretiert hat ist das du in deinem 1. Script eine SID fürs Exclude angibts. Die kannst du im Normalfall aber noch gar nicht wissen (falls sie nicht unaufgelöst in der Userverwaltung steht) weil die im Hex steht was das Script erst zerlegt. Oder sieht man die SID in einem Screenshot in der Fehlermeldung?
DWW sollte IMHO am besten das zweite Skript als Lösung markieren, dann kann es auch ein DAU direkt benutzen .
Hab darauf jetzt nochmal nachträglich über dem ersten Skript explizit darauf hingewiesen.
So hoffe nun ist alles klar
Grüße Uwe