Schlagwort-Archive: VBScript – Visual Basic Script

Visual Basic Script ist eine von Microsoft entwickelte Skriptsprache. Sie ist eng verwandt mit Visual Basic for Applications und wird üblicherweise interpretiert.

Benutzer SID abfragen VBScript

Benutzer SID, Security Identifier abfragen mit VBScript GetSID.vbs. Die SID ist ein eindeutiger Sicherheits-Identifikator, den Microsoft Windows automatisch vergibt, um jedes System, jeden Benutzer und jede Gruppe dauerhaft zu identifizieren.

Benutzer SID abfragen mit GetSID.vbs, und in Notepad ausgeben.

'Description: Zeigt alle Benutzerkonten und SID
'Prerequisite: Windows

Set WshShell = CreateObject("Wscript.Shell")
Set fso = Wscript.CreateObject("Scripting.FilesystemObject")
fName = WshShell.SpecialFolders("Desktop") & "\GetSID.txt"
Set b = fso.CreateTextFile(fName, true)
b.writeblanklines 1
b.writeline string(61,"*")
b.writeline "Benutzerkonten mit SIDs und Profile-Pfade."
b.WriteLine "GetSID.vbs - 2010 by Don Metteo"
b.WriteLine "https://think.unblog.ch"
b.writeline string(61,"*")
b.writeblanklines 1

strProfileBranch = "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colAccounts = objWMIService.ExecQuery _
 ("Select * From Win32_UserAccount")

For Each objAccount in colAccounts
 If objAccount.Name = "HelpAssistant" or objAccount.Name = "SUPPORT_388945a0" then
 else
 b.writeline "Username : " & objAccount.Name
 b.writeline "SID : " & objAccount.SID
 b.writeline "Profile Path : " & GetHomePath(objAccount.SID)
 b.writeblanklines 1
 end if
Next

Function GetHomePath(strSID)
 On Error Resume Next
 GetHomePath = WshShell.ExpandEnvironmentStrings(Trim(WshShell.RegRead (strProfileBranch & strSID & "\ProfileImagePath")))
 On Error Goto 0
End Function

b.writeline string(61,"*")
b.close
WshShell.Run "notepad.exe " & fName

Set fso = Nothing
set Wshshell = Nothing

Nach dem Ausführen des VBScriptes wird die Abfrage der Benutzer SID im Notepad geöffnet.

Benutzer SID abfragen VBScript

Anmerkung

An die SID sind die in Access Control Lists festgelegten Zugriffsrechte gebunden. Wenn die Namen von Systemen, Benutzern oder Gruppen geändert werden, bleiben deren SID unverändert. Deshalb bleiben ihnen alle Zugriffsrechte erhalten. SID ermöglichen also, die Namensgebung problemlos zu ändern.

SID des Betriebssystems

Während der Installation des Betriebssystems erhält das System selbst seinen SID durch einen Zufallszahlengenerator. Dies ist erforderlich, damit eine eindeutige Kennzeichnung im Netzwerk gewährleistet ist. Anschließend werden sogenannte well-known SID vergeben, die auf jedem System gleich sind. Zum Beispiel für die Gruppe Administratoren.

SID des Benutzers

Der SID eines Benutzers wird automatisch erstellt, wenn dieser angelegt wird. Der SID eines lokal angelegten Benutzers basiert auf dem SID des Systems. Eine SID in einer Domäne angelegten Benutzers ändert sich, wenn er von einer Domäne in eine andere verschoben wird, da im SID auch die Domäne des Benutzers hinterlegt wird. Die Benutzer SID kann man abfragen mit dem VBScript GetSID.vbs, die Benutzer SID wird in notepad.exe ausgeben.

VBScript whoami.vbs

Mit dem VBScript whoami.vbs wird die aktuelle IP-Adresse, der Computer und der Benutzername unter Windows ausgegeben.

whoami.vbs

' VBScript Source File Created for any
' NAME: whoami.vbs

Const HKCR = &H80000000
Const HKCU = &H80000001
Const HKLM = &H80000002
Const HKU = &H80000003

Set fs = CreateObject("Scripting.FileSystemObject")

'**********************************
'ComputerName aus Registry auslesen
'**********************************

s_Key = "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName"

s_Wert = "ComputerName"
Set wmireg = GetObject("winmgmts:root\default:StdRegProv")

result = wmireg.GetStringValue(HKLM, s_Key, s_Wert, s_ComputerName)

'**********************************
'UserName aus Registry auslesen
'**********************************

s_Key = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"

s_Wert = "DefaultUserName"
Set wmireg = GetObject("winmgmts:root\default:StdRegProv")

result = wmireg.GetStringValue(HKLM, s_Key, s_Wert, s_UserName)

'*****************************************
'IPConfig Daten auslesen und echo ausgeben
'*****************************************

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set IPConfigSet = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

Set colAdapters = objWMIService.ExecQuery _
    ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each IPConfig in IPConfigSet
   If Not IsNull(IPConfig.IPAddress) Then
      For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      ausgabe = Wscript.Echo ("IP Address " & IPConfig.IPAddress(i) & vbCrLf & "Computer " & s_ComputerName & vbCrLf & "Username " & s_UserName)
      Next
   End If
Next

Anmerkung

whoami ist ein Unix-Kommando, welches den Benutzernamen des den Befehl aufrufenden Benutzers ausgibt. Der Begriff leitet sich von der englischen Frage Who am I? (auf Deutsch „Wer bin ich?“) ab. Gerade bei Mehrbenutzersystemen wie Unix und verwandten Derivaten sind Benutzer in der Lage, ihre Benutzerkennung zu wechseln, beispielsweise mit dem Unix-Kommando su oder sudo. Vor allem bei älteren Shells, die in dem Prompt nicht den Benutzernamen mit ausgegeben haben, konnten bereits nach wenigen su Verwirrungen bei dem Benutzer auftreten, unter welchem Benutzernamen er gerade arbeitet. Ein kurzer Aufruf des whoami-Kommandos genügt, um sich der aktuell verwendeten Benutzerkennung sicher zu sein.

whoami ist Teil der GNU Core Utilities; die Version wurde von Richard Mlynarik für das GNU-Projekt geschrieben. Mit dem vorliegenden VBScript whoami.vbs wird die aktuelle IP-Adresse, der Computer und der Benutzername unter Windows ausgegeben.

Moderne Unix-Shells setzen beim Anmelden die Umgebungsvariable $USER, die üblicherweise auch im Kommandozeilenprompt ausgegeben wird. Diese enthält jedoch den Benutzernamen, der zur effektiven UID gehört, und nicht zu der realen. Mit einem Aufruf von su ohne Parameter ändert sich beispielsweise nur die reale UID, die effektive jedoch nicht. Daher kann es hier zu Verwirrungen kommen:

$ whoami

Ein Aufruf von su mit dem Parameter – ändert hingegen auch die effektive UID, weil eine neue Login-Shell gestartet wird (und damit auch der Wert der Umgebungsvariable $USER ein anderer ist). Hier ist im Allgemeinen der Aufruf von whoami überflüssig, weil der reale Benutzername dann bereits im Prompt steht:

$ su -