SID (akt. User) Visual Basic 2005 import von Datei?
Hallo allezusammen,
ich habe folgenedes Problem: Ich hatte bereits mit eurer Hilfe eine Batch-Datei erstellt welche die SID auslesen kann und dann entsprechende Registry einträge erstellt. Jetzt möchte ich allerdings die .bat Datei innerhalb einer Visual Basic 2005 Anwendung aufrufen. Ich muss dabei beachten, dass der ausführende Benutzer ggf. keine Admin-Rechte hat. Gibt hier jetzt eine schöne Möglichkeit die SID zum aktuellen User zu ermitteln:
ist der Code der Batch-Datei. Ich bin mit der installierten VB version nun leider nicht in der Lage die SID aus der Datei sid.txt auslesen und als Variable in VB zu speichern. Ist das überhaupt notwendig, dass ich es mir so kompliziert mache oder geht es möglichweise auch einfacher, direkt per VB (nur ohne Admin-Rechte)?
und kann ich die Registry-Einträge nicht auch direkt aus VB aufrufen? wenn ja wie..
PS: Ich habe die letzten 2 stunden überall gesucht und konnte mit keinem der Tipps so richtig was anfangen.
PPS: Ich hoffe der Beitrag ist richtig eingeordnet, wegen VB/Batch
mfg Przigoda
ich habe folgenedes Problem: Ich hatte bereits mit eurer Hilfe eine Batch-Datei erstellt welche die SID auslesen kann und dann entsprechende Registry einträge erstellt. Jetzt möchte ich allerdings die .bat Datei innerhalb einer Visual Basic 2005 Anwendung aufrufen. Ich muss dabei beachten, dass der ausführende Benutzer ggf. keine Admin-Rechte hat. Gibt hier jetzt eine schöne Möglichkeit die SID zum aktuellen User zu ermitteln:
@%~d0%
@cd tools
@user2sid.exe %username% > %temp%\sid.txt REM von euch empfohlenes tool
@FOR /f "delims=: tokens=1,*" %%i in ('findstr /n $ %temp%\sid.txt') DO @If %%i EQU 2 @Set SID=%%j
@echo %SID% > %temp%\sid.txt
@FOR /f "tokens=5 delims=\" %%i in ('REG QUERY "HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat" /s^|findstr /c:"Acrobat\\"') DO set "AcrobatVersion=%%i"
@reg add "HKEY_USERS\%SID%\Software\Adobe\Adobe Acrobat\%AcrobatVersion%\Security....." /v t0 /f /d "%Temp%\*.dll"
ist der Code der Batch-Datei. Ich bin mit der installierten VB version nun leider nicht in der Lage die SID aus der Datei sid.txt auslesen und als Variable in VB zu speichern. Ist das überhaupt notwendig, dass ich es mir so kompliziert mache oder geht es möglichweise auch einfacher, direkt per VB (nur ohne Admin-Rechte)?
und kann ich die Registry-Einträge nicht auch direkt aus VB aufrufen? wenn ja wie..
PS: Ich habe die letzten 2 stunden überall gesucht und konnte mit keinem der Tipps so richtig was anfangen.
PPS: Ich hoffe der Beitrag ist richtig eingeordnet, wegen VB/Batch
mfg Przigoda
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 94351
Url: https://administrator.de/contentid/94351
Ausgedruckt am: 23.11.2024 um 01:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo Pzigoda!
Zum Auslesen der SID: Das hier bei www.visualbasicscript.com gefundene VBScript (hatte ich in ähnlicher Form selbst schon in Deinem vorigen Beitrag - allerdings in einen Batch integriert, daher etwas schwerer zu finden )
kann (bis auf das "WScript.Echo", aber die SID soll ja ohnehin in eine Variable) praktisch unverändert in VB2005 eingesetzt werden.
[Edit] Allerdings frage ich mich (bzw Dich ) weiterhin, wozu Du die SID benötigst - anstelle eines Eintrages unter HKU\SID sollte doch auch ein Eintrag gleich in HKCU funktionieren? [/Edit]
Grüße
bastla
Zum Auslesen der SID: Das hier bei www.visualbasicscript.com gefundene VBScript (hatte ich in ähnlicher Form selbst schon in Deinem vorigen Beitrag - allerdings in einen Batch integriert, daher etwas schwerer zu finden )
Dim objNetwork : Set objNetwork = CreateObject("WScript.Network")
Dim wmiQuery : wmiQuery = "Select * From Win32_UserAccount Where Domain='" & objNetwork.UserDomain & _
"' And Name='" & objNetwork.UserName & "'"
Dim objWMIService : Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Dim colItems : Set colItems = objWMIService.ExecQuery(wmiQuery)
Dim objItem
For Each objItem in colItems
WScript.Echo "Your SID is : " & objItem.SID
Next
[Edit] Allerdings frage ich mich (bzw Dich ) weiterhin, wozu Du die SID benötigst - anstelle eines Eintrages unter HKU\SID sollte doch auch ein Eintrag gleich in HKCU funktionieren? [/Edit]
Grüße
bastla
Hallo Przigoda!
Aufgrund des oben dargestellten Batches wäre "t0" ein Wert, kein Schlüssel - so ist das auch im folgenden Script umgesetzt:
Erfasst werden alle mit "t" (oder "T") beginnenden Werte im "Security"-Schlüssel.
Mit diesem Script hast Du ein Grundgerüst - zu ergänzen wären zB noch Checks, ob es überhaupt einen "Adobe Acrobat"-Eintrag gibt, etc.
VB2005 hat übrigens eine Onlinehilfe, in welcher mit dem Suchbegriff "Registry" durchaus brauchbare Informationen zu finden sind ...
Grüße
bastla
[Edit] Auflösung von %temp% hinzugefügt [/Edit]
Aufgrund des oben dargestellten Batches wäre "t0" ein Wert, kein Schlüssel - so ist das auch im folgenden Script umgesetzt:
Dim Adobe As String = "Software\Adobe\Adobe Acrobat"
Dim aKeys = My.Computer.Registry.CurrentUser.OpenSubKey(Adobe).GetSubKeyNames
Dim Version = aKeys(UBound(aKeys))
Dim AdobeSec As String = Adobe & "\" & Version & "\Security"
Dim aVals = My.Computer.Registry.CurrentUser.OpenSubKey(AdobeSec).GetValueNames
Dim Latest As Integer = -1, SubKey As String
For Each SubKey In aVals
If LCase(Mid(SubKey, 1, 1)) = "t" Then
If Val(Mid(SubKey, 2)) > Latest Then Latest = Val(Mid(SubKey, 2))
End If
Next
Dim NewValue As String = "t" & CStr(Latest + 1)
Dim NewData As String = Environment.ExpandEnvironmentVariables("%temp%") & "\*.dll"
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\" & AdobeSec, NewValue, NewData)
Mit diesem Script hast Du ein Grundgerüst - zu ergänzen wären zB noch Checks, ob es überhaupt einen "Adobe Acrobat"-Eintrag gibt, etc.
VB2005 hat übrigens eine Onlinehilfe, in welcher mit dem Suchbegriff "Registry" durchaus brauchbare Informationen zu finden sind ...
Grüße
bastla
[Edit] Auflösung von %temp% hinzugefügt [/Edit]