bkamk2
Goto Top

AutoIt 3 RunAsSet Admin Script

Also ich sitz jetz seit etlichen Tagen an dieser Aufgabe und bekomms net hin.
Ich bin dabei ein Script zu schreiben, das nach eingabe des Administrator kennwortes ein anderes Script aufruft.
Leider funktioniert hier garnix mehr^^

Also wenn man das Script ausführt öffnet sich ein GUI mit einem Eingabefeld für das Passwort und 2 Buttons für Login und Exit.
Soweit funktioniert das auch.
Wenn ich jedoch das PW eingebe, kommt die Meldung, dass das andere Script nicht aufgerufen werden konnte weil ich nicht die nötige berechtigung habe.
Des weiteren sagt er mir das der Benutzername oder das Kennwort falsch sind und ich mich deshalb nicht mit diesen anmelden könne.

Hoffe mir kann einer helfen.

#include <GUIConstants.au3>

GuiCreate("BGinfo Installation", 300, 200,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))  

GUISetBkColor (0xCCE5FF)

$Label_1 = GuiCtrlCreateLabel("Passwort", 20 , 30, 200, 20)  
$passwort = GUICtrlCreateInput( "" , 20, 60, 200, 20)  
$Button_1= GuiCtrlCreateButton("Login" , 20, 120, 60)  
$endbutton = GuiCtrlCreateButton("Beenden", 10, 150, 120, 20)  
$End = GuiCtrlRead($endbutton)
$Start = GuiCtrlRead($Button_1)


GUISetState()


$msg = 0
While $msg <> $GUI_EVENT_CLOSE
$msg = GUIGetMsg()
Select
Case $msg = $endbutton Or $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $Button_1
exitloop
EndSelect
WEnd

If $passwort = ("passwort") Then  
EndIf

RunAsSet("administrator",@ComputerName, $passwort)  
Run("C:\adm\Isadmin.exe")  
RunAsSet()

Hier der Inhalt des zweiten Scripts, die wiederum ein drittes Script aufruft:

If IsAdmin() Then
Msgbox(0, "Status", "Admin Rights Detected")  
RunWait("C:\adm\gui.exe")  
Else
Msgbox(0, "Status", "Admin Rights Not Detected")  
Endif

Hier das dritte und letzte Script:

$picdir = "C:\adm\Script\Bilder"  

GuiCreate("BGinfo Installation", 490, 400,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))  

GUISetBkColor (0xCCE5FF)
$Pic_1 = GuiCtrlCreatePic($picdir & "\logo.JPG" ,0 ,0, 490, 32)  
$Pic_2 = GuiCtrlCreatePic($picdir & "\jp2.JPG" ,0 , 32, 490, 75)  
$Label_1 = GuiCtrlCreateLabel("Willkommen zum Installationprogramm für BGinfo", 0 , 110, 490, 30)  
$Label_2 = GuiCtrlCreateLabel("Bitte drücken Sie zum Installieren auf den Button: Installieren", 0 , 125, 490, 30)  
$Label_3 = GuiCtrlCreateLabel("Zum Beenden drücken Sie bitte den Knopf beenden!", 0,140,490,30)  
$Button_1 = GuiCtrlCreateButton("Installieren", 340, 350, 130, 20)  
$endbutton = GuiCtrlCreateButton("Beenden", 10, 350, 130, 20)  
$localdir = "C:\BGinfo"  
$serverdir = "\\130.30.2.21\apps\Tools\BGinfo"  
$reg = $serverdir & "\BGinfoAutoRun.reg"  
GuiSetState(@SW_SHOW)
While 1
	$msg = GUIGetMsg()
	If $msg <> 0 Then
		$End = GuiCtrlRead($endbutton)
		$Start = GuiCtrlRead($Button_1)
		Select
			Case $msg = $Button_1
				MsgBox(0, "", "Die Installation wird gestartet. Bitte warten Sie einen Moment.")  
				DirCopy($serverdir & "\BGinfo", $localdir, 1) ;  
				If FileExists( "C:\BGinfo\BGinfo.exe") AND RegRead ( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "BackGround" ) Then  
				MsgBox(0, "", "Installation erfolgreich")   
				ELSE
				MsgBox(0, "" ,"Installation Fehlegeschlagen")  
				EndIf
				MsgBox(0, "" , "Bitte starten Sie den Computer neu!")  
				Exit
			Case $msg = $endbutton Or $msg = $GUI_EVENT_CLOSE
				ExitLoop
		EndSelect
	EndIf
WEnd
Func Beenden()
Exit
EndFunc
Exit

Vieleicht findet ja einer was interessantes was mit weiterhilft.

Content-Key: 72002

Url: https://administrator.de/contentid/72002

Printed on: May 4, 2024 at 10:05 o'clock

Member: BKAMk2
BKAMk2 Oct 30, 2007 at 07:15:19 (UTC)
Goto Top
*push*


Keiner ne Idee????
Hmm...kennt jemand wenigstens ne quelle wo ich fragen könnte?


Hat sich erledigt hab das ganze jetzt mit 2 Scripten hinbekommen.
Das größte Problem war wohl das er Scripte die in anderen Ordnern oder Partitionen waren nicht starten konnte.

Jetz funktioniert aber...wenn wer interesse hat poste ich dass ganze mal.
Member: 0cool
0cool Aug 21, 2012 updated at 09:33:32 (UTC)
Goto Top
Hallo BKAMK2,

deine while schleife im ersten Skript sieht für mich kommisch aus.

Hier eine Beispiel while schleife:

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
                  Case $Button_1
                        Exit
                  Case $Button_2
                        Exit
                  Case $Button_3
                        ShellExecute(...)
	EndSwitch
WEnd

Die Zeile 12 in deinem Skript ist unnötig bzw. Fallsch. GUICtrlRead wird benützt um für Eingabenfelder (Input, Dropdown...)

Wenn du über eine GUI eine Eingabe per Input Feld einlesen willst musst du die daten erst mal an dein Skript übergeben. Z.B über einen Button. Die ausgeführte Aktion gehört in das jeweilige case rein.

Soviel auf die Schnelle.

Für noch mehr Informationen und ausführliche Hilfe würde ich mich an deiner Stelle an das AutoIT Forum wenden.
URL: http://www.autoit.de/

In diesem Forum findest du AutoIt Spezialisten, die gerne helfen. Das kann ich aus eigener Erfahrung bestätigen.

@edit: Lass dir das übergebene Passwort in einer MsgBox anzeigen, das hilft Dir vielleicht weiter.

Gruß
0cool