1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. mikexmagic

Beiträge von mikexmagic

  • Mit Zeiten rechnen

    • mikexmagic
    • 9. Juni 2010 um 16:09

    Hallo Leute,

    ich greife das Thema noch einmal auf um mache es etwas komplizierter:

    Wie bringe ich es fertig verschiedene Zeitangaben zu addieren?

    Beispiel:

    0:01:20
    0:03:17
    0:12:43
    0:17:20

    Muss ich die Zeiten tatsächlich erst komplett splitten und einzeln addieren? Oder gehts eleganter?

    Gruß Mike

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 11:55

    Ich habe den Eintrag bereits im Default User so gesetzt. Das ist unser Trick ;)
    Den DefaultUser verteilen wir während den PC-Setups bereits mit auf die Geräte.
    Das Default-User -Verzeichnis wird einfach durch ein vorbereitetes ersetzt...

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 10:40

    Concara: Danke, du hast mir den entscheidenden Wink gegeben. Wenn die Option bei ausführenden User gesetzt sein muss, muss AutoIt das beim Ausführen auch wissen. Also muss ich doch das Profil mit laden.
    Heisst im Klartext dass ich das logon_flag im RunAs nicht auf '0' sondern auf '1' setze. Das hat geholfen... So einfach kann das sein.
    Vielen Dank an alle :rock:

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 09:53

    Äh, sorry... Ja, XP. Vergessen mit anzugeben...
    Die Option ist bei und tatsächlich bereits so eingestellt, lässt sich aber auch vom User selber ändern, da der Key dazu sich ja auch unter HKCU befindet...

    Aber das hilft mir noch nicht weiter ?(

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 09:36

    Blade: Sorry, aber der user 'installer' ist ein lokal angelegter User uns somit ist die Domain @ComputerName die richtige.
    Und wie gesagt: mit dem alten RunAsSet() hat es wunderbar geklappt und die Calls für den Taskmgr oder cmd funktionieren ja auch einwandfrei.
    Also an der Domain liegt es auch nicht....

    Es geht übrigens ebenfalls nicht wenn ich statt Variablen die echten Werte eingebe. Auch nicht mit DomainAdmins...
    Immer der gleiche Fehler....

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 09:22

    Micha_he:

    leider liegst du da falsch. Der Explorer lässt sich durchaus mehrfach starten und dies auch mit unterschiedlichen Rechten. Ich und unser gesamter Helpdesk arbeiten seit Jahren so.
    Und wie bereits beschrieben öffnet sich der explorer per DOS-RunAs (manuell eingegeben) ja ohne Probleme. Im Taskmanager kann schön erkennen unter welchem Kontext die Prozesse laufen...

    Aber danke für den Versuch ;)

    Nachtrag: Es kann aber sein dass man dazu in den Ordneroptionen den Punkt 'Jeden Ordner in einem eigenen Prozess starten' aktiv haben muss. Dies ist bei uns der Fall...

  • RunAs 'Explorer.exe' geht nicht...

    • mikexmagic
    • 26. April 2010 um 08:42

    Hallo Gemeinde,

    ich habe für den Helpdesk in unserer Firma ein kleines Tool gebaut um schnell beim User Funktionen mit Adminrechten zu starten. In der alten AutoIT-Version hat das mit dem alten RunAsSet() auch immer super geklappt. So hatte das damals ausgesehen:

    Spoiler anzeigen
    [autoit]

    func RunAsStuff($RunAsSelect)
    if askcode($input[4][0])<>"OK" then Return

    [/autoit] [autoit][/autoit] [autoit]

    RunAsSet("installer", @ComputerName, $installer)
    Select
    Case $RunAsSelect=1
    Run("cmd.exe","C:\")
    Case $RunAsSelect=2
    Run("Explorer.exe","C:\")
    Case $RunAsSelect=3
    Run("control","C:\")
    Case $RunAsSelect=4
    Run("Regedit","C:\")
    EndSelect
    RunAsSet()
    endfunc

    [/autoit]


    So sieht das ganze dann heute aus:

    Spoiler anzeigen
    [autoit]

    func RunAsStuff($RunAsSelect)
    if askcode($input[4][0])<>"OK" then Return

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case $RunAsSelect=1
    RunAs("installer", @ComputerName, $installer,0,"cmd.exe","C:\")
    Case $RunAsSelect=2
    RunAs("installer", @ComputerName, $installer,0,"Explorer.exe","C:\")
    Case $RunAsSelect=3
    RunAs("installer", @ComputerName, $installer,0,"control","C:\")
    Case $RunAsSelect=4
    RunAs("installer", @ComputerName, $installer,0,"Regedit","C:\")
    Case $RunAsSelect=5
    RunAs("installer", @ComputerName, $installer,0,"mmc C:\windows\system32\compmgmt.msc","C:\")
    Case $RunAsSelect=6
    RunAs("installer", @ComputerName, $installer,0,"Taskmgr.exe","C:\")
    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    endfunc

    [/autoit]

    Und jetzt das seltsame daran: Nur die Aufrufe 'erplorer.exe' und 'Control' gehen nicht. Alles andere schon. Dazu kommt, wenn ich zB DOS ausfache per cmd.exe (das klappt ja) und dort explorer.exe starte, passiert auch nix. Wenn ich aber normal per Start->Ausführen cmd mache, und dort per RunAs /user:... usw den explorer aufrufe, dann gehts...
    Kann mir das einer erklären? Such ich hier den Fehler im AutoIT-Skript oder in Windows? Wäre cool wenn jemand nen heissen Tip hätte...


    Gruß Mike

  • Scripte als Flowchart darstellen

    • mikexmagic
    • 16. Februar 2010 um 14:09

    richtig progandy,

    genau das suche ich...
    Klar, normalerweise gehts anders herum.

    Aber in unserem Unternehmen hat leider einer der scripter seine Stelle frei gemacht und ich hab jetzt die Aufgabe mich in seine seitenlangen Scripte reinzudenken.
    Ich dachte nur, dass es mit so nem Chart einfacher wird...

    Also Tools die diverse Scriptsprachen in Flowchart darstellen können gibt es viele. VBS, C#, Java, PHP... alles dabei...Aber keinen für AutoIT. Evtl kann man einem der Tools eine eigene Sprache beibringen. Mann müsste ja nur die Sprungmarken und Schleifen definieren.

    Danke trotzdem...
    Aber evtl kommt ja noch was...

  • Scripte als Flowchart darstellen

    • mikexmagic
    • 16. Februar 2010 um 11:22

    Hallo Gemeinde,

    kann mir einer von euch ein Tool empfehlen mit dem ich AutoIT-Scripte, bzw VBS als Flowchart darstellen kann? Zusätzlich müsste dann das Tool auch die Möglichkeit bieten nicht unterstützte Sprachen manuell einzubinden. Würde das eben gerne auch für AutoIT und einer weiteren speziellen Sprache nutzen wollen.

    Als Beispiel gebe ich hier mal 'Visustin' an. So was in der Art, dieses Toll ist halt nicht anpassbar...


    Danke
    Gruß Mike

  • RunAsSet gibt es nicht mehr???

    • mikexmagic
    • 4. Februar 2010 um 08:09

    Hey Leute,

    schön dass ihr euch um meine Postanzahl gedanken macht ... :rofl:

    Aber mal im ernst, ich nutze tatsächlich in einem Script den RunAsSet um in eine INI zu schreiben. Bzw ist das die PBK-Datei für die DFÜ-Einträge unter AllUsers. Dort hat der 'normale User' aber keine Schreibrechte. So wie oben angegeben kann ich den Eintrag aber ändern. Ohne RunAsSet aber nicht... Probiert es aus...

    Jetzt steh ich da mit meinem Talent und muss die INI (PBK in Form einer INI) irgendwie mit einem RunAs ändern.

    Und dafür suche ich jetzt Tips oder Ideen...

    Gruß
    der Punkteposter....

    Nachtrag:
    also ich habe mir jetzt geholfen indem ich den INIWrite-Befehl in eine extra Script gepackt habe. Das sieht dann so aus:

    [autoit]

    If $CmdLine[0]<4 Then
    msgbox(0,"use","use: iniwrite.exe <ini file> <section> <value name> <new value>" & @lf & "eg: iniwrite.exe ""C:\boot.ini"" ""boot loader"" ""timeout"" ""5""")
    Exit
    else
    $inifile=$CmdLine[1]
    $section=$CmdLine[2]
    $valuename=$CmdLine[3]
    $value=$CmdLine[4]
    Endif

    [/autoit][autoit][/autoit][autoit]

    IniWrite ( $inifile, $section, $valuename, $value)

    [/autoit]

    und im Hauptscript lass ich dann per RunAsWait die neue exe ausführen:

    [autoit]

    RunAsWait("installer", @ComputerName, $installer,0,@Tempdir & "\IniWrite.exe """ & $pbkfile & """ """ & $Dialup & """ """ & "PreviewUserPw"" ""1""","C:\Windows",@SW_HIDE)

    [/autoit]

    Klar, man könnte jetzt das ganze noch professioneller machen mit Errorabfrage und so. Aber für meine Zwecke reicht es jetzt erst mal. quick and dirty....

    Wenn aber jemand eine schönere Lösung hat eine INI per Commandozeile zu ändern... immer her damit!

    Gruß Mike

  • RunAsSet gibt es nicht mehr???

    • mikexmagic
    • 3. Februar 2010 um 17:09
    Zitat von bernd670

    Hallo,

    Du siehst das vollkommen richtig das RunAsSet weggefallen ist und dafür jetzt RunAs und RunAsWait existiert! Es ist aber kein großer Verlust da sich RunAsSet eh nur auf die Befehle Run und RunWait ausgewirkt haben.

    Das kann ich so nicht unterschreiben.
    Ich nutze in einem Script zb: folgendes um eine INI anzupassen die für den user nicht zugreifbar ist:

    [autoit]

    RunAsSet("installer", @ComputerName, $installer)
    IniWrite ( $pbkfile, $Dialup, "PreviewUserPw", "1" )
    RunAsSet()

    [/autoit]

    Aber wie soll ich das jetzt machen?

    Jemand einen Tip?

  • ObjCreate("ADSystemInfo") Fehler ohne AD

    • mikexmagic
    • 18. Januar 2010 um 11:26

    @Bert:
    äh ja, das wäre natürlich der einfachste weg. Das Tool würde aber auf PCs in ganz Europa eingesetzt werden. Und da müsste ich Standort und Länderabhängig einen anderen DC angeben.
    Ich werde mal versuchen die Idee mit dem Ping auf die Systemvariable %logonserver% umzusetzen. Das wäre evtl ne Möglichkeit.
    Danke erstmal dafür...

  • ObjCreate("ADSystemInfo") Fehler ohne AD

    • mikexmagic
    • 15. Januar 2010 um 16:47

    Hallo zusammen,

    ich habe jetzt schon ne Menge gegooglet und probiert, komme aber nicht weiter.

    Folgendes Problem: Ich habe in einem Script eine Abfrage auf das Object "ADSystemInfo". Klappt auch alles ohne Probleme. Das Script holt mir meine Info artig aus dem Active Directory.
    Jetzt kann es aber vorkommen dass das Script gestartet wird, wenn der PC garnicht im Netz ist. Und dann knallts. Ich bekomme leider keine Fehlerabfrage hin.

    Hier mal der codeschnipsel:

    [autoit]

    $objADSystemInfo = ObjCreate("ADSystemInfo")
    If @error then msgbox (0,"","Error")
    $objDomain = ObjGet("LDAP://" & $objADSystemInfo.DomainDNSName)
    If @error then msgbox (0,"","Error")

    [/autoit]

    Ich habe also mal mit IF @error versucht (Tips aus anderen Foren). Klappt aber nicht.

    Das Script bricht (ohne Netz) mit folgender Meldung in der Console ab:

    Code
    C:\script.au3 (868) : ==> The requested action with this object has failed.:
    $objDomain = ObjGet("LDAP://" & $objADSystemInfo.DomainDNSName)
    $objDomain = ObjGet("LDAP://" & $objADSystemInfo.DomainDNSName^ ERROR


    Hat jemand ne Idee wie ich mein Script dazu bringe zu erkennen ob die Domäne und somit die AD verfügbar ist?

    Danke

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 4. August 2009 um 17:04

    Jetzt mal kurz zurück zum Ursprungsscript...

    Ich hab ja schon viel gescriptet. In Notes, in VBA, VBS, Acces und so weiter.
    Kann mir trotzdem jemand mal die Arbeitsweise dieses Scriptes erklären?

    [autoit]

    $objWMIService=ObjGet("winmgmts:{impersonationLevel=impersonate, (Security)}!\\" & "." & "\root\cimv2")

    [/autoit][autoit][/autoit][autoit]

    $colMonitoredEvents = $objWMIService.ExecNotificationQuery ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' and TargetInstance.EventCode = '4201' ")

    [/autoit][autoit][/autoit][autoit]

    Do
    ConsoleWrite ($colMonitoredEvents.TargetInstance.EventCode)
    $objLatestEvent = $colMonitoredEvents.NextEvent
    ConsoleWrite ("Willkommen im Netz. Bitte starten Sie den Computer neu...")
    Until 1

    [/autoit]

    OK, als erstes erstelle ich ein Object. Was auch immer das für eins ist. Irgendwas Windows-Internes. Ich schätze mal das EventLog.
    Als nächstes wird eine Abfrage auf das Object ausgeführt. Auch noch OK. Es wird nach Code 4201 gefiltet. OK. Das Ergebnis müsste doch jetzt ALLE 4201-Ereignisse aus dem Log enthalten, oder?

    Jetzt blicke ich dann die Logik des Rests nicht mehr....
    Kann mir das jemand irgendwie erleutern?
    Danke ?(

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 4. August 2009 um 17:04

    Jetzt mal kurz zurück zum Ursprungsscript...

    Ich hab ja schon viel gescriptet. In Notes, in VBA, VBS, Acces und so weiter.

    Kann mir trotzdem jemand mal die Arbeitsweise dieses Scriptes erklären?

    [autoit]

    $objWMIService=ObjGet("winmgmts:{impersonationLevel=impersonate, (Security)}!\\" & "." & "\root\cimv2")

    [/autoit][autoit][/autoit][autoit]

    $colMonitoredEvents = $objWMIService.ExecNotificationQuery ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' and TargetInstance.EventCode = '4201' ")

    [/autoit][autoit][/autoit][autoit]

    While 1
    $objLatestEvent = $colMonitoredEvents.NextEvent
    msgbox(1,"","Willkommen im Netz. Bitte starten Sie den Computer neu...")
    Wend

    [/autoit]

    OK, Als erster erstelle ich ein Object. Was auch immer das für eins ist. Irgendwas Windows-Internes. Ich schätze mal das EventLog.
    Als nächstes wird ein Abfrage auf das Object ausgeführt. Auch noch OK. Es wird nach Code 4201 gefiltet. OK. Das Ergebnis müsste doch jetzt ALLE 4201-Ereignisse aus dem Log enthalten, oder?

    Jetzt blicke ich dann die Logik des Rests nicht mehr....

    Kann mir das jemand irgendwie erleutern?

    Danke ?(

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 4. August 2009 um 11:26

    So, ich habe dank des Forums nun auch die UpTime des PCs im Script untergebracht.
    Das Script bringt nun eine Meldung wenn der PC ein Firmen-IP bekommt und mehr als 24 Stunden nicht neu gestartet wurde.

    Spoiler anzeigen
    [autoit]

    #Include <Date.au3>
    ;AutoItSetOption('TrayIconHide')

    [/autoit] [autoit][/autoit] [autoit]

    ;Variables
    $CompanyNet="10.49."
    $MaxUpTime=1440 ;Minutes / 24hours

    [/autoit] [autoit][/autoit] [autoit]

    Dim $BootTime, $TDYear, $TDMonth, $TDDay, $TDHour, $TDMinute, $TDSeconds, $DiffCalc, $TimeUnit

    [/autoit] [autoit][/autoit] [autoit]

    ;Read last boot time
    BootTime()
    $Year=StringLeft($BootTime, 4)
    $Month=StringMid($BootTime, 5, 2)
    $Day=StringMid($BootTime, 7, 2)
    $Hour=StringMid($BootTime, 9, 2)
    $Minute=StringMid($BootTime, 11, 2)
    $Seconds=StringMid($BootTime, 13, 2)
    $BootTimeCalc = $Year & "/" & $Month & "/" & $Day & " " & $Hour & ":" & $Minute & ":" & $Seconds

    [/autoit] [autoit][/autoit] [autoit]

    ;Run query
    $objWMIService=ObjGet("winmgmts:{impersonationLevel=impersonate, (Security)}!\\" & "." & "\root\cimv2")
    $colMonitoredEvents = $objWMIService.ExecNotificationQuery ("Select * from __instancecreationevent where TargetInstance isa 'Win32_NTLogEvent' and TargetInstance.EventCode = '4201' ")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $Message=0

    [/autoit] [autoit][/autoit] [autoit]

    ;Check up time
    $UpTime=GetTimeDifferenz("n")
    $Uptimehours=int($UpTime/60)
    If $UpTime>$MaxUpTime Then
    ;Is new IP from company net?
    If stringleft(@IPAddress1,6)=$CompanyNet Then $Message=1
    If stringleft(@IPAddress2,6)=$CompanyNet Then $Message=1
    If stringleft(@IPAddress3,6)=$CompanyNet Then $Message=1
    If stringleft(@IPAddress4,6)=$CompanyNet Then $Message=1
    Endif

    If $Message=1 Then
    $objLatestEvent = $colMonitoredEvents.NextEvent
    Msgbox(16+8192+262144,"Willkommen im Henry Schein Netz...","Willkommen im Netz..." & @cr & @cr & "Sie haben Ihren Computer seit " & $Uptimehours & " Stunden nicht neu gestartet!" & @CR & "Bitte starten Sie den Computer neu...")
    endif
    Wend

    [/autoit] [autoit][/autoit] [autoit]

    Func BootTime()
    $COMPUTERNAME=EnvGet("COMPUTERNAME")
    Local $ProductCode, $ProductName, $Val
    Local $objItems
    Local $objWMI

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    [/autoit] [autoit][/autoit] [autoit]

    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($objItems) Then
    For $objItem In $objItems
    $oBootTime = $objItem.LastBootUptime
    Next
    EndIf
    $BootTimeArray=StringSplit($oBootTime,".",1)
    $BootTime=$BootTimeArray[1]
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func GetTimeDifferenz($TimeUnit)
    Dim $DiffCalc
    Return _DateDiff( $timeunit,$BootTimeCalc,_NowCalc())
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • ConsoleWrite und Notepad++

    • mikexmagic
    • 4. August 2009 um 09:55

    Hallo Gemeinde,

    ich scripte nun schon ziemlich lange mit AutoIT und stolpere jetzt erst über den Befehl ConsoleWrite hier im Board in so manchen Beispielscripten.
    In der Hilfe finde ich die Aussage dass der Befehl in die Texteditorkonsole schreibt. Der Texteditor sollte Konsolenausgaben natürlich unterstützen. Da ich in Notepad++ arbeite und dieser ganz klar ein Konsolenfenster hat, wundere ich mich jetzt, dass sich dort nix tut.

    Wer kann mir also sagen ob und wie ich ConsoleWrite im Notepad++ nutze...

    Danke, Gruß Mike

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 29. Juli 2009 um 14:31

    @ XovoxKingdom
    Jo, das ist etwas Eleganter. Aber unser IP-Segment ist überall 10.49.
    Danke aber trotzdem...

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 29. Juli 2009 um 14:27
    Zitat von chip

    Mh mich iritiert nur eines, kann bei euch jeder einfach so ins Netz nur in dem er Laptop anschließt? Habt ihr keine Sicherheitsvorkehrungen?

    Erstmal ja. Eine Notebook bekommt dann erstmal ne IP. Und alles was man dann mit der IP machen kann, kann man machen. Aber mehr auch nicht.
    Für alles andere wie Zugriffe auf Server oder so braucht mal natürlich Rechte und müsste auch nicht Mitglied der Domäne sein.

  • EventLog Abfrage verhält sich komisch.

    • mikexmagic
    • 29. Juli 2009 um 13:29

    chip

    Hey Super. Ich hatte schon experimentiert mit @IPAdress1 und so...

    Das Problem ist, dass unser Aussendiesnt immer mal an anderen Standorten reinschaut. Also auch ein anderes Gateway.
    Wir könnten prüfen auf die ersten 2 IP-Segmente 10.49.

    Hier mal mein Laienhafter Vorschlag

    [autoit]


    $FaNet="10.49."
    $Message=0
    If stringleft(@IPAddress1,6)=$FaNet Then $Message=1
    If stringleft(@IPAddress2,6)=$FaNet Then $Message=1
    If stringleft(@IPAddress3,6)=$FaNet Then $Message=1
    If stringleft(@IPAddress4,6)=$FaNet Then $Message=1

    [/autoit][autoit][/autoit][autoit]

    If $Message=1 Then
    msgbox(1,"","Willkommen im Netz. Bitte starten Sie den Computer neu...")
    endif

    [/autoit][autoit][/autoit][autoit][/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™