Hallo, ich bin gerade dabei ein Script zu schreiben, welches
- Zur Sicherheit einen Logout auf einem Internetportal via JSP aufruft
- Dann eine neue URL zusammenbaut (via Parameter), welche den IE öffnet und den Benutzer dann gleich automatisch anmeldet
Ganz wichtig !!
Bitte schickt mir nur Eure Scripte und Verbesserungen, wenn Ihr es als normaler Benutzer OHNE lokale Adminrechte am laufen habt.
Mit Adminrechten geht das Script nämlich schon !!
Wir vermuten mal, dass das Problem am Redirect liegt !!
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <IE.au3>
;$CmdLine[1] = url to browse first e.g.: https://www.eanvportal.de/eanvd
;$CmdLine[2] = username
;$CmdLine[3] = password
;$CmdLine[4] = behnummer
;$CmdLine[5] = atbrolle
;$CmdLine[6] = file to load (optiona="")
;
Opt("TrayIconHide", 0) ;0=show, 1=hide tray icon
$oIE = _IECreate($CmdLine[1], 0, 0)
_IENavigate($oIE, $CmdLine[1] & "/logout.jsp", 0)
;Pruefen ob ein Objekt erzeugt wurde
If IsObj($oIE) Then
MsgBox(0, "IsObj", "ist")
$oIE.visible = 1 ; 0 = hides it
_IELoadWait($oIE)
_IENavigate($oIE, $CmdLine[1] & "/authorize/j_spring_security_check?j_username=" & $CmdLine[2] & "&j_password=" & $CmdLine[3] & "&j_behnummer=" & $CmdLine[4] & "&j_atbrolle=" & $CmdLine[5] & "")
_IELoadWait($oIE)
;get title (if you are logged in
$title = _IEPropertyGet($oIE, "title")
MsgBox(0, "titel 1", $title); for debugging
If (StringInStr($title, "Home", 0)) Then
; wir haben den login geschafft, nun koennen wir den explorer auch visible setzten
$oIE.visible = 1 ; unhides it, now that we've hidden what we don't want
$oIE.AddressBar = 0 ; turn off all four IE Bars - works on 3rd party bars too, mostly.
$oIE.MenuBar = 0
$oIE.StatusBar = 0
$oIE.ToolBar = 0
$oIE.Width = 1080
$oIE.Height = 800
$oIE.Left = 0
$oIE.Top = 0
;und den BGS laden (falls uebergeben
if (($CmdLine[0]) > 5) Then
;MsgBox(0,"titel 2",$title)
;_IENavigate($oIE, @ScriptDir & "/loading.html") ; kann verwendet werden um einen Hinweistext einzublenden, während das XFDL-Plugin lädt.
_IENavigate($oIE, $CmdLine[6], 0)
EndIf
$hWnd_Active = _IEPropertyGet($oIE, "hwnd")
While WinExists($hWnd_Active)
Sleep(1000)
$hWnd_Active = _IEPropertyGet($oIE, "hwnd")
WEnd
Exit
EndIf
MsgBox(0, "eANV client", "Anmeldung konnte nicht verarbeitet werden")
Exit
Else
MsgBox(0, "IsObj", "ist nicht")
EndIf
;wenn kein Objekt erzeugt wurde, Fehlermeldung ausgeben.
MsgBox(0, "eANV client - Erstellen des IE-Objekts fehlgeschlagen", "Es konnte keine neue InternetExplorer-Instanz erzeugt werden!")
Exit
Ich habe jetzt eine CMD Box einmal als lokaler Administrator offen und eine zweite als normaler Benutzer. Die kompilierte EXE rufe ich via "Text.cmd" auf. In der Test.cmd werden testweise die Parameter mit übergeben.
Wenn ich die Test.cmd als Admin aufrufe, geht ALLES. Ich bekomme zwar weiter hinten noch eine Fehlermeldung, die können wir dann aber später besprechen
Wenn ich die Test.cmd als Benutzer aufrufe, wird weder die Messagebox
[autoit]MsgBox(0, "IsObj", "ist")
[/autoit]noch die Messagebox
[autoit]MsgBox(0, "IsObj", "ist nicht")
[/autoit]aufgerufen.
Das heißt doch, dass das Script im Befehl
[autoit]_IENavigate($oIE, $CmdLine[1] & "/logout.jsp", 0)
[/autoit]hängen bleibt, oder ?
Was kann ich da machen ?
Gruss Hassan
Nachtrag:
Ich habe jetzt mal von Sysinternals den Process Monitor parallel mitlaufen lassen. Gefiltert habe ich auf die kompilierte EXE und die SUCCESS habe ich schon rausgenommen. Daraus dann ein Excel File erstellt, damit man noch Filtern kann.
Damit wurde die Aktion aufgezeichnet, wenn ich das ganze als "Benutzer" laufen lassen.
Bin mal gespannt, was Ihr da rauslesen könnt.
Nachtrag 2:
Ich habe festgestellt, dass das Problem auch nur unter Windows 7 (eventuell auch Vista) besteht. Als normaler Benutzer unter Windows XP geht das Script auch.