Beiträge von Racer

    Hallo!


    Ein kleiner Erfahrungswert mit den Netzlaufwerke: Das verwenden von Laufwerksbuchstaben ist schon sehr sehr alt und eigentlich braucht man diese seit 20 Jahren nicht mehr. Ich weiß, viele verwenden diese aus Gewohnheit, aber es würde auch ein Shortcut auf \\server\freigabe reichen.

    Was weniger bekannt ist: es gibt einen technischen Unterschied: Wird beim Start von Windows bzw. der Benutzeranmeldung ein Netzlaufwerk mit einem Buchstaben verwendet wird auch versucht diesen zu verbinden. Wenn das nicht gleich funktioniert, z.B.: Notebook das nicht im (W)Lan ist, was ja bei Windows öfter vorkommt als man glaubt, dauert die Anmeldung deutlich länger und im schlechtesten Fall hat man im Explorer beim Buchstaben ein rotes X daübergelegt (konnte nicht verbunden werden). Programme die möglichweise im Autostart sind und auf den Buchstaben verweisen (auch Links in Execl, Word,...) brauchen dann ewig bis sie dann in ein Timeout laufen. Ganz schlimm ist es mit Outlook und PST-Datein die auf einen Share liegen: So manches Outlook gackt dann ab...


    Verwendet man nur UNC-Pfade passiert die Prüfung erst wenn der Link auch verwendet wird. Das ist deutlich schneller und konfortabler und diese "alt"-Problem (stammen von Windows 3.11 !!) gibt es dann nicht oder nicht in der Form.


    Wie gesagt, ist ein Erfahrungswert aber ich versteht wenn man lieb gewonnen Handhabungen nicht her geben möchte.


    lg

    Racer

    Hallo!


    Ich musste zur Wartungszwecke ein Programm vom mir erweitern das sich selbst updaten kann oder zumindest den Benutzer darüber informiert das es eine neu Version verfügbar ist und diese Installiert werden kann.

    Jetzt wollte ich nicht ein zweiten Programm machen das den Hauptteil dann updatet sondern es sollte ein ausführbares Programm bleiben. In vielen Firmen wird aber Applocker eingesetzt und verbiedet zum Beispiel die Ausführung von Batch-Scripts (oder VB,...). Trotzdem kann man das machen.


    Ich bitte mal gleich um Entschuldigung das die Funktion etwas "unaufgeräumt" ist, aber Weihnachten steht vor der Türe und ich muss den Weihnachtsmann noch ein bisschen unterstützen ;)


    In neinem Fall wird das von dem FS aufgerufen, aber es kann auch von einen Webserver zuerst ein Download durchgeführt werden und dann lokal das Update durchführen. Was halt so jeder braucht....


    Wichtig ist nur die Zeile:

    run ('cmd /c ping 127.0.0.1 /n 2 & copy /y ' & $update_program & ' ' & @ScriptFullPath & ' & start ' & @ScriptFullPath , "", @SW_HIDE)


    gefolgt von einen Exit


    lg

    Racer


    PS: nach den Feiertagen räume ich den Code auf.....


    AutoIt
    ; ***********************************************************; Selbstupdate; Übergabe: Updatesourepfad; Übergbae: autoupdate - Meldung (damit nicht bei jedem Start "Sie haben bereits die aktuelle Version" kommt; Rückgabe: -1 Update wurde nicht gefunden (Pfad/Datei nicht vorhanden, Zugriff nicht möglich...); ***********************************************************Func _Selfupdate($source, $autoupdate = False)	Local $update_program = $source & @ScriptName                                                                    ;full Path	Local $ret                                                                                                        ;Arbeitsvariablen	Local $file_version                                                                                                ;Welche Versionsnummer steht im INI-File	If $test = True Then                                                                                            ;Nur für die Entwicklung damit ein Update simuliert werden kann		$update_program = $source & "msvpn_monitor.exe"	EndIf	$ret = FileExists($update_program)                                                                                 ;gibt es das Programm überhaupt und/oder ist das Share erreichbar ?	If $ret <> 1 Then                                                                                                ;1 OK, alles andere schlecht		If $test = True Then			Print("Datei " & $update_program & " wurde nicht gefunden!")		Else			;echo ("Datei " & $update_program & " wurde nicht gefunden!")												;Momentan einfach nichts machen....			Return -1		EndIf	EndIf	$file_version = FileGetVersion($update_program)                                                                 ;Fileversion einlesen	If $test = True Then		print($update_program & @TAB & $file_version)		print("aktuelle Programmversionsnummer:" & @TAB & $version)		print("$autoupdate: " & $autoupdate)	EndIf	$ret = _VersionCompare($file_version, $version)                                                                 ;Vergleich der Versionsnummern	Select		Case $ret = 1			$ret = MsgBox(1, "Programmupdate", "Möchten Sie auf die Version V" & $file_version & " updaten?", 15)			If $ret = 1 Then                                                                                        ;Wenn OK geklickt worden ist				If @Compiled = 0 Then					print('cmd /c ping 127.0.0.1 /n 2 & copy /y ' & $update_program & ' ' & @ScriptFullPath & ' & start ' & @ScriptFullPath)				Else					Run('cmd /c ping 127.0.0.1 /n 2 & copy /y ' & $update_program & ' ' & @ScriptFullPath & ' & start ' & @ScriptFullPath, "", @SW_HIDE)      ;Selfupdate					Exit                                                                                            ;Programm muss beendet werden damit es kopiert werden kann -> Automatisch wieder starten				EndIf			EndIf		Case $ret = -1			If $autoupdate = True Then				MsgBox(1, "Programmupdate", "Gratuliere, Sie haben eine aktuellere Version als ich ;-)", 10)			EndIf			Return		Case $ret = 0			If $autoupdate = True Then				MsgBox(0, "Programmupdate", "Sie haben bereits die aktuellste Version", 10)			EndIf			Return	EndSelectEndFunc   ;==>_Selfupdate; ***********************************************************

    Hallo!


    Viele Lese- und Schreibzugriffe auf eine USB-Stick geht selten gut. Ich habe schon eine Lade voll defekter Sticks bei mir hier liegen. Diese sind zig mal überschrieben worden und nach ein paar Wochen waren sie kaputt :(

    Rekord war: AutoIT Portable direkt auf den Sick ausführen, nach 2 Stunden war dieser so halb defekt (Lesefehler, voll, lies sich nicht mehr gut formatieren),....


    Ich kann Dir nur emfehlen das Du da eher zu einer Disk greifst, die halten deutlich mehr aus!


    Auch ja, mit Windows Boadmittel formatiere ich schon lagen keine Datenträger mehr, ich bin ein großer Fan von Ghost.exe bzw. GDdisk.exe. Die gibt es auch als 64Bit Version (für WinPE native x64), funktionieren auch unter Windows 11 und macht fast alles platt wo sich schon Windows lange weigert!


    Symantec Ghost Implementation Guide | Manualzz


    lg

    Racer

    Öffne ich die WaWi, die in der VM installiert ist, und bin einige Minuten inaktiv, dann geht meine SQL-Datenbank auch schlafen. Bei einer neuen Datenaktivität muss sie erst "aufwachen" - und das dauert so 2 - 3 Minuten. Kann natürlich sein, dass dieses Verhalten auf den SQL-Server Dienst beschränkt ist. Da ich aber nichts anderes in der VM mache, kann ich das nicht beurteilen. Vielleicht gibt es da auch irgendwelche Einstelloptionen, die ich noch nicht gefunden habe. Solch ein Verhalten könnte ich natürlich im Produktivbetrieb nicht gebrauchen.

    Stelle mal die Energieeinstellungen von der VM auf "Höchstleistung"...vielleicht hilft es das hier nicht ewas "zu müde" wird....


    lg

    Harald

    Hallo!


    Mir fallen dazu zwei Dinge ein:

    1.) Autologon.exe von Mark Russinovich (Tool gibt es bei der MS zum Download). Damit wird mal zumindest das Kennwort für den User nicht unverschlüsselt abgelegt

    2.) Es gibt einen Windows Update Offline installer https://download.wsusoffline.net/ . Wenn man sich das etwa genauer ansieht stellt man zu einem fest das es in AutoIT geschrieben ist :rock: und zum Anderen externe Tools verwendet werden die auch ein automatisches Logon mit dem angemeldeten User von alleine macht. Ob das auch noch "einfach so" unter einem aktuellen Windows 10/11 funktioniert muss probiert werden (VM ist dafür hervorragend geeignet).


    lg

    Racer


    PS: Würde sich der Securesreen so einfach ausheblen lassen, wäre Windows schon sehr unsicher....

    Hallo Moombas!


    Danke für Deine schnelle Antwort!


    @SystemDir & "\imageres.dll" funktioniert! Und dann ist es mir wie Schuppen von den Augen gefallen: Wenn man @Systemdir & "c:\windows\system32\imageres.dll" schreibt wird das nie was =O


    Ein klarer Fall "Den Wald vor lauter Bäume nicht sehen" oder "zulange auf den Quellcode gestarrt...." Auf jedenfall Zeit fürs Wochenende!


    lg

    Racer

    Hallo!


    Ich spiele (lerne) mit der Funktion _GUIImageList_AddIcon umzugehen. Die ersten Erfolge sind auch schon da, nur bin ich jetzt auf ein kleines Problem gestoßen:


    Gibt man den Pfad absolut an (z.B.: c:\windows\system32\imageres.dll") wird kein Icon angezeigt. Mache ich das wie im Beispiel mit "\imageres.dll" kommt das Icon. Das wäre ja im Grunde nicht so schlimm, würde nicht die MS ab Windows 10 nicht wo anderen ablegen siehe https://www.deskmodder.de/wiki…rort_der_Windows_10_Icons


    Und damit die Fehlersuche ja recht lange geraucht hat: Koda kann das schon über die GUI....


    lg

    Racer


    Ich habe es jetzt mit CRTL+Shirf+V versucht...hilft nicht :( Ja ich kopiere es direkt aus dem SciTE heraus. Ich habe auch schon aus dem Notepad++ mit und ohne CR versucht...liegt wohl an meine Finger ;)


    Sorry für mein GETTOK ....wahr eine meiner ersten Funktionen die in sehr vielen Scripts steht. Ich habe die Funktion dazukopiert!


    @Variablen-Deklaration: Ich weiß nicht was Du meinst? Bei mir gibt es keinen Error...vielleicht ein Fehler bei meinen vielen Versuchen das Script in ein vernünftiges Aussehen zu bekommen? Ich habe es jetzt nochmal kopiert - sieht immer noch schei...aus. Gettok und print (ja nicht schimpfen: heute weiß ich auch das man seine eignen Funktionen mit _ kennzeichnet) angehängt!


    lg

    Racer

    Hallo!


    Ich habe mal eine Tool für Techniker geschrieben die eine USB-HD automatisch bespielen soll. Dabei habe ich festgestellt das unter Windows 7 die HD als USB und unter Windows 10 als SCSI-Device zurückgemeldet wird. Kann sein das Du hier auch auf so ein Problem stößt.


    Um den Umweg über die Powershell zu vermeiden kann gerne meine Funktion verwenden, muss sie vielleicht nur ein bisschen anpassen!


    AutoIt
    ;****************************************************************; Sucht alle USB-LW laut WMI mit den gegebenfalls zugehörigen; Laufwerksbuchstaben; Übergabe: -; Rückgabe: 2D Array;            Col0                                                        Col1;            Kingston DTR30G2 USB Device|\\.\PHYSICALDRIVE4                 J:;            Samsung Portable SSD T3 USB Device|\\.\PHYSICALDRIVE3        F:|G:; Hinweis:  wird nichts gefunden, wird trotzden ein Array zurückgeliefert;            im Index [0][0] steht immer die Anzahl der gefunden Laufwerke;****************************************************************func _wmi_usb_lw ()local $diskenlocal $anzahl = 0local $namelocal $Mediatypelocal $anslocal $captionlocal $disknummerlocal $colItemslocal $Alocal $Blocal $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")dim $dd[1][2]If IsObj($objWMIService) Then    $colItems = $objWMIService.ExecQuery('select * from Win32_DiskDrive')    If IsObj($colItems) Then        For $oItem In $colItems            $name = $oItem.Name            $Mediatype = $oItem.MediaType            $ans = $oItem.InterfaceType            $caption = $oItem.Caption            if ($ans = "USB" or $ans = "SCSI") and $Mediatype = "External hard disk media" Then                $anzahl = $anzahl + 1                ReDim $dd[$anzahl + 1][2]                $dd[$anzahl][0] = $caption & "|" & $name                ;print ($caption & @TAB & $Mediatype)            EndIf        Next    endifEndIf$dd [0][0]= $anzahlif $dd [0][0] <> 0 Then    for $i = 1 to $dd[0][0]        $disknummer = StringRight ($dd[$i][0],1)        ;print ("disknummer: " & $disknummer & @TAB & $dd[$i][0])        $colItems = $objWMIService.ExecQuery('select * from Win32_LogicalDiskToPartition')        If IsObj($colItems) Then            For $oItem In $colItems                $A = $oItem.Antecedent                                            ;beinhaltet die Disknummer...                $B = $oItem.Dependent                                            ;beinhlatet den LW                if StringInStr ($A, "Disk #" & $disknummer) <> 0 Then                    ;print (gettok ($b, "=", 2))                    $dd[$i][1] = $dd[$i][1] & gettok ($b, "=", 2) & "|"                EndIf            Next            $dd[$i][1] = StringReplace ($dd[$i][1], '"' , '')            if StringRight ($dd[$i][1], 1) = "|" Then                $dd[$i][1] = StringLeft ($dd[$i][1], StringLen ($dd[$i][1]) -1)            EndIf        EndIf    NextEndIfReturn ($dd)EndFunc;****************************************************************
    
    
    ;**********************************************; Tokentrenner ohne Array !!; Übergabe: Der String der untesucht wird; Übergabe: Der String der den ersten String teilt; Übergabe: Das wievielte Teil; Ausgabe: Den gesuchten Token oder eine Leerstring (=Fehler);**********************************************func gettok ($string, $teiler, $teilnummer)local $neu , $tmp$tmp = stringsplit ($string, $teiler, 1)if $tmp[0] >= $teilnummer then    $neu = $tmp[$teilnummer]else    $neu = ""endifreturn $neuendfunc;**********************************************
    
    ;*******************************************************Func print ($text)    ConsoleWrite ($text & @crlf)EndFunc;*******************************************************


    lg

    Racer

    Hallo!


    Wie misterspeed schon sehr ausführlich erklärt hat gibt es zwei Arten von Sitztungen: RDP und Console. Die Console kann via KVM (meist ein physikalischer Anschluss der auf TCP/IP umgemünzt wird) oder z.B.: via ESXi eine Console (Webbroser).


    Was schon geht auf einen Server: Du kannst eine RDP-Sitzung auf eine fixe Auflösung stellen und dort Deine Scripts laufen lassen. Jeder Windows Server biete 2 Einstiege an (Remote oder Console). Zur Wartung steigst Du mit einem zweiten User ein, so unterbrichst Du nicht die erste Sitzung.


    Es darf nicht darauf vergessen werden das:

    1.) Kein autologgoff nach einer Zeit (meist 4 Stunden) von der RDP-Sitzung passiert

    2.) Kein Standby (sollten Server sowieso nicht haben)

    3.) Die RDP-Sitzung darf nur getrennt werden und nicht abgemeldet!


    Meiner Meinung nach sollten Serverprogramme immer ohne GUI auskommen, sonst gibt es immer unnötige Probleme nach einen Reboot (der kommt sicher)!


    lg

    Harald

    Hallo!


    Super für diese UDF :thumbup: ! Ich habe schon einmal versucht mit XML-Daten klar zu kommen, aber sagen wir mal ich bin zu alt dafür 8o


    Aber diese Funktinen verstehe ich sehr gut! Ich hoffe das es auch mit tiefer verschachtelten XML-Daten funktioniert, ich benötige immer wieder kleine Tools zur Auswertung von z.B.: Applockereinträge.

    Wenn ich wieder im Büro bin werde ich mich damit herumspielen und testen....


    lg

    Racer

    Hallo!


    Ich weiß gar nicht ob es das mit den Biepstöne noch gibt, aber da ich schon seeeehr lange in der EDV unterwegs bin kenne ich das nur wenn etwas nicht stimmt. Das sind BIOS-Signale das etwas nicht in Ordnung ist.

    Wie Schnuffel geschrieben hat: Biepstone notieren (wie Morsezeichen nur grauslicher) und dann bei dem Gerätetype im Internet suche. Auch die Motherboardbeschreibung sollte Dir weiterhelfen können!


    Bei mancher Hardware kann auch das DVI-Kabel entscheidend sein - ist ein Erfahrungswert!


    lg

    Racer


    PS: wieviel sind 900 Kronen in € ?

    Hallo!


    Dexter: Ich bin zwar aus Österreich aber ich denke die gesätzlichen Vorgaben sind sehr ähnlich. Allerdings, solange Du keine Verrechnung machst ist es egal mit welchen Programm Du Deine Waren verwaltest. Nur die Rechnungsstellung muss mit einen Programm gemacht werden das (in Ö) beim Finanzamt gelistet ist. Auch ich habe das Kassenbuch (in Autoit geschrieben) von meiner Frau und die Registierungskassa (gekaufte Software) getrennt. Das ist kein Problem, außer in D sind die Gesätze strenger!


    Aber ich gebe Dir schon recht, hier ein bisschen Geld zu investieren ist sicher der bessere Weg um nicht in Teufels(Finanzamt)-Küche zu kommen.


    lg

    Racer

    Fenster (GUIs) und "als Windows Dienst" laufen lassen wird schwierig....Dienst laufen normalerweise unter einem Systemaccount und der hat keine Oberfläche (gibt natürlich Ausnahmen, aber die lassen wir mal außen vor).


    Oder meinst Du ein "Servicedienst" und ein Clientprogramm? Das ist schon deutlich mehr Aufwand da Du die Programm miteinander kommuniziern lassen musst!


    Wenn Du mit Punkt 5 eher einen "Autostart" meinst dann würde ich das eher als Task sehen der auf bestimmte Events reagiert (bei der Useranmeldung, Ereignisse,.....)


    lg

    Racer

    Hallo Andy!


    Vielen Dank für die Info.....


    Ich hatte gehofft das vielleicht jemand eine schöne UDF dafür hat. Die Beschreibung übersteigt leider meine Kenntnisse damit hier etwas vernünfitges herauskommt.


    lg

    Racer

    Hallo!


    Nachdem bei mir in der Arbeit die Security immer mehr anzieht und Remoteabfragen via RPC in absehbarer Zeit abgeschaltet wird (Firewall) habe ich die ersten Gehversuche mit Winrm gestartet. Im guten alten DOS-Fenster (ja, ich weiß das ist Kine DOS mehr 8) ) funktioniert das schon recht gut.


    Ich suche jetzt eine elegantere Möglichkeit aus AutoIT heraus Winrs zu verwenden. Nur den Fensteroutput zu parsen ist nicht wirklich spannend!

    Hat jemand damit schon gearbeitet oder Erfahrung? Für Tipps und Tricks wäre ich sehr dankbar!


    Für die ersten Gehversuche würde ich die gute alte quser-abfrage ersätzen wollen....


    lg

    Racer