Nie szukam identyfikatorów SID użytkowników. Szukam identyfikatora SID komputera, który katalog aktywny użyje do jednoznacznej identyfikacji komputera. Nie chcę również wysyłać zapytania do aktywnego serwera katalogów, chcę zapytać sam komputer.Jak mogę odzyskać identyfikator SID komputera z systemem Windows za pomocą usługi WMI?
Odpowiedz
(Ooo, to było zabawne!) Poszedłem na dziką pogoń gęsi, jak to mówią, próbując pobrać wystąpienie Win32_SID, które jest singletonem i nie można go wyliczyć za pomocą zwykłych metod InstancesOf lub Query ... yadda yadda yadda.)
Cóż, to zależy od tego, który komputer SID chcesz (poważnie!). Jest identyfikator SID, którego komputer lokalny używa sam ... W tym celu wystarczy uzyskać identyfikator SID lokalnego administratora i usunąć "-500" od końca, aby uzyskać identyfikator SID komputera.
W VBScript, wygląda to tak:
strComputer = "AFAPC001"
strUsername = "Administrator"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objAccount = objWMIService.Get("Win32_UserAccount.Name='" & strUsername & "',Domain='" & strComputer & "'")
WScript.Echo "Administrator account SID: " & objAccount.SID
WScript.Echo "Computer's SID: " & Left(objAccount.SID, Len(objAccount.SID) - 4)
W PowerShell, tak:
function get-sid
{
Param ($DSIdentity)
$ID = new-object System.Security.Principal.NTAccount($DSIdentity)
return $ID.Translate([System.Security.Principal.SecurityIdentifier]).toString()
}
> $admin = get-sid "Administrator"
> $admin.SubString(0, $admin.Length - 4)
W C# na .NET 3.5:
using System;
using System.Security.Principal;
using System.DirectoryServices;
using System.Linq;
public static SecurityIdentifier GetComputerSid()
{
return new SecurityIdentifier((byte[])new DirectoryEntry(string.Format("WinNT://{0},Computer", Environment.MachineName)).Children.Cast<DirectoryEntry>().First().InvokeGet("objectSID"), 0).AccountDomainSid;
}
Wyniki wszystkich z nich odpowiadają odpowiedzi otrzymanej z PsGetSid.exe.
Z drugiej strony, nie jest SID, że Active Directory wykorzystuje do identyfikacji każdego komputera członkiem domeny ... To jeden pan sprowadzić dostając SID konta komputera w domenie - ten, który kończy znak dolara.
Np. Korzystając z powyższej funkcji PowerShell dla członka domeny o nazwie "KLIENT", można wpisać get-sid "CLIENT$"
.
+1 Niezłe wyjaśnienie wraz z podaniem różnych przykładów. – Garett
$ ID.Translate ([System.Security.Principal.SecurityIdentifier]) - już zwrócił sid komputera (AccountDomainSid), sugeruję, aby Get-Sid nie próbował przekonwertować Id na ciąg, aby użytkownik mógł wybrać dowolny atrybut - w tym przypadku AccountDomainSid. – shalomb
tylko notatkę dodatkową w wersji PowerShell: '$ admin.SubString (0, $ admin.length() - 4)' powinno być '$ admin.SubString (0, $ admin.Length - 4)' w celu pracy .. – Luke
Możesz po prostu uruchomić reg query HKLM\SOFTWARE\Microsoft\Cryptography /v MachineGuid
z wiersza poleceń systemu Windows.
Oto przykładowy plik wsadowy Windows:
set KEY_REGKEY=HKLM\SOFTWARE\Microsoft\Cryptography
set KEY_REGVAL=MachineGuid
REM Check for presence of key first.
reg query %KEY_REGKEY% /v %KEY_REGVAL% 2>nul || (echo No theme name present! & exit /b 1)
REM query the value. pipe it through findstr in order to find the matching line that has the value. only grab token 3 and the remainder of the line. %%b is what we are interested in here.
set KEY_NAME=
for /f "tokens=2,*" %%a in ('reg query %KEY_REGKEY% /v %KEY_REGVAL% ^| findstr %KEY_REGVAL%') do (
set KEY_NAME=%%b
)
echo %KEY_NAME%
To jest nie to samo, ten identyfikator GUID NIE jest identyfikatorem SID urządzenia. – Anders
Znaleziony narzędzie z witryny firmy Microsoft, który może Ci SID łatwo
http://technet.microsoft.com/en-us/sysinternals/bb897417.aspx
Wystarczy pobrać plik, rozpakuj go, otwórz w wierszu polecenia, a następnie uruchom psgetsid.exe.
Są jakieś dobre wytłumaczenie na SID z witryny firmy Microsoft, jak również
http://blogs.msdn.com/b/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx
- 1. Odczytywanie kluczy rejestru za pomocą usługi WMI
- 2. Uzyskaj identyfikator SID komputera (w tym podstawowy kontroler domeny)
- 3. Jak uzyskać unikatowy identyfikator komputera z systemem Windows 8 w języku C#?
- 4. Nie można zdalnie podłączyć mojego komputera z systemem Windows 8.1
- 5. Rozmiar bazy danych za pomocą usługi WMI w .NET
- 6. Zamykanie komputera z systemem Windows z terminalu linux
- 7. Jak mogę uruchomić aplikację OpenGL zainstalowaną na komputerze z systemem Linux z mojego komputera z systemem Windows?
- 8. Jak odzyskać identyfikator wątku z boost :: thread?
- 9. Mapowanie Samby S-1-22- [12] - * Identyfikator SID na nazwy
- 10. Uzyskaj identyfikator PID usługi Windows pod nazwą usługi
- 11. Naprawiono identyfikator komputera (uuid.getnode)
- 12. Jak uzyskać identyfikator dostawcy urządzenia z systemem Android za pomocą adb?
- 13. WMI vs Windows APIs
- 14. Jak zabić proces na komputerze zdalnym za pomocą wmi
- 15. Jak uzyskać dane z WMI za pomocą aplikacji C?
- 16. Uzyskaj identyfikator bieżącego urządzenia z systemem Windows Phone 7
- 17. Reinicjowanie usługi dziennika zdarzeń systemu Windows bez ponownego uruchamiania komputera
- 18. Czy mogę pobrać unikalny identyfikator komputera serwera z plikiem node.js?
- 19. Utwórz niepowtarzalny identyfikator urządzeń z systemem iOS?
- 20. Jak uzyskać unikalny podpis sprzętu/oprogramowania z komputera z systemem Windows w/C++
- 21. Zarejestruj identyfikator urządzenia bezpośrednio za pomocą usługi Amazon SNS
- 22. Zdalne debugowanie javascript na iPadzie z komputera z systemem Windows jest możliwe?
- 23. ASP.NET - Uzyskaj identyfikator główny/względny (RID) dla obiektu DirectoryEntry/SID
- 24. Jak mogę odzyskać kompozytora za pośrednictwem Ant?
- 25. Jak odzyskać węzeł nadrzędny za pomocą XQuery?
- 26. Korzystanie z widoku debugowania za pomocą usługi systemu Windows
- 27. jak uzyskać ścieżkę phyiscal usługi Windows za pomocą .net?
- 28. Pobieranie znacznika serwisowego z komputera Dell za pomocą .net?
- 29. Jak zmienić typ uruchomienia usługi Windows za pomocą linii poleceń
- 30. Jak wylogować się z komputera za pomocą powłoki?
Czy komputer zmianę SID z nowej instalacji Windows? np. czy dotyczy to konkretnej instancji systemu operacyjnego, czy jest to sprzętowe? – Cel