Windows: Programme ohne UAC mit Adminrechten ausführen

Manchmal kommt es vor, das man per Fernwartung ein Programm installieren muss, jedoch bekommt man das Eingabefenster für die Zugangsdaten nicht angezeigt und möchte dem Anwender nicht das Adminkennwort geben.

Dann einfach eine CMD-Box starten und zu den Ordner navigieren, wo die Installationsdatei liegt und das folgende eingeben.

runas /profile /env /user:AD\Benutzer

Anschließend kann man das Kennwort eingeben, ohne das der Anwender dies sieht. Natürlich benötigt man dazu ein Konto mit Adminrechten :).

Tipps:

Sollte es erforderlich sein, das das Kennwort direkt mitgegeben wird, dann kann man dies mittels psexec machen, das sollte sich dann im selben Verzeichnis befinden.

Beispiel:

psexec -u AD\BENUTZER -p PASSWORT c:\windows\system32\calc.exe

Mittels Tools, wie bat2exe kann mann denn Code dann unleserlicher machen – was jedoch keine sichere Lösung ist, da es sicherlich Tools gibt, die diese Kennwörter wieder Sichtbar machen können.

Update:

Alternativ kann man auch mit AutoIt fertige Exe Dateien erstellen, welche mit z.B. runas() oder runaswait() installationen ausführen. Hier hat man natürlich wesentlich mehr möglichkeiten.

Hier ein Beispiel:

ProcessClose("nlnotes.exe")
ProcessClose("nsd.exe")
ProcessClose("notes.exe")
ProcessClose("notes2.exe")
Run("C:\Program Files(x86)\IBM\Lotus\Notes\nsd.exe -kill")
Run("C:\Program Files(x86)\IBM\Notes\nsd.exe -kill")
Run("C:\Program Files\IBM\Lotus\Notes\nsd.exe -kill")
Run("C:\Program Files\IBM\Notes\nsd.exe -kill")

$RegMultiLotus = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Lotus\Notes","MultiUser")
$RegMultiIBM = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\IBM\Notes","MultiUser")

$InstallClientPath = @ScriptDir & "\IBM_NOTES_CLIENT_9.0.1_WINDOWS_G"
$InstallFPPath = @ScriptDir & "\FP8"

$SupportInfo = " - bitte wenden Sie sich an den Support unter 123 123 -123 oder -124."
$Domain = RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters", "Domain")
Local $IsDomainMember = StringInStr($domain, "domainname")

if $IsDomainMember = "1" Then
if $RegMultiLotus = "0" or $regMultiIBM = "0" Then
RunAsWait("administrator", "domain", "passwort", 0, $InstallClientPath & "\setup.exe /s /v""ALLUSERS=1 SETMULTIUSER=0 /qb!")
If @Error <> "0" Then
MsgBox(64,"Hinweis"," Es ist ein Fehler beim Notesclient Update aufgetreten" & $SupportInfo)
Exit
EndIf
Else
RunAsWait("administrator", "domain", "passwort", 0, $InstallClientPath & "\setup.exe /s /v""ALLUSERS=1 SETMULTIUSER=1 /qb!")
If @Error <> "0" Then
MsgBox(64,"Hinweis"," Es ist ein Fehler beim Notesclient Update aufgetreten" & $SupportInfo)
Exit
EndIf
EndIf
RunAsWait("administrator", "domain", "passwort", 0, $InstallFPPath & "\setup.exe /s /v/qb+!")
If @Error <> "0" Then
MsgBox(64,"Hinweis"," Es ist ein Fehler beim Notesfeaturepack Update aufgetreten" & $SupportInfo)
Exit
EndIf
Else
if $RegMultiLotus = "0" or $regMultiIBM = "0" Then
RunAsWait("administrator", @ComputerName, "passwort", 0, $InstallClientPath & "\setup.exe /s /v""ALLUSERS=1 SETMULTIUSER=0 /qb!")
Else
RunAsWait("administrator", @ComputerName, "passwort", 0, $InstallClientPath & "\setup.exe /s /v""ALLUSERS=1 SETMULTIUSER=1 /qb!")
EndIf
RunAsWait("administrator", @ComputerName, "passwort", 0, $InstallFPPath & "\setup.exe /s /v/qb+!")
EndIf

MsgBox(64,"Notesupdate", "Die Updates wurden abgeschlossen. Sollten noch Programme geöffnet sein können Sie diese mit Ok schließen. Danach können sie die Dateien löschen.")

Hinweis: Sie verwenden die Codeschnippsel auf eigene Verantwortung. Bitte vorher ausgiebig testen.

Tags: , , , , ,