Aufruf des Eventviewers funktioniert nicht mehr

  • water das unicode /ansi Problem tritt bei Benutzung von z.B. notepad++ als Texeditor nicht auf, da dort die "Zeichensätze" eingestellt werden können.

    32k Grenze?


    Gruß


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • Ich rede aber nicht von Notepad++ sondern den Ini-Funktionen von AutoIt. Und die 32k Grenze findest Du unter Inireadsection. Ist eine Limitierung von MS.

  • Ich spreche auch von der Ini!!!!

    Die ini muss ja mit etwas erstellt, geschrieben, befüllt werden! Und wenn Du den falschen Editor zum erstellen, schreiben, befüllen nimmst, kann das tatsächlich schon mal zu Zeichensatzproblemen führen ---> daher mein Hinweis auf Notepad++ damit ist klar definiert in welchem "Dialekt sprich Teichensatz" man schreibt.

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • Klemmt bei Deiner Tastatur das Rufezeichen :rofl:?

  • Ja!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

    :rofl::rofl::rofl::rofl::rofl::rofl::rofl::rofl::rofl::rofl:

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • dir ist aber bekannt, dass das Ausrufezeichen als "schreien" gilt?

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Nein! Ein Ausrufezeichen unterstreicht lediglich eine Aussage, oder hebt diese hervor.... etwas anderes hebe ich dazu noch nie gehört!

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • der Beitrag ist bereits 6 Jahre alt ... ==> NZZ

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • bewegt sich das auf dem Niveau?

    "Zum Mohrenkopf": Wie ein Schwarzer den Namen seines Restaurants verteidigt
    Berlin - Sprache kann rassistisch sein; doch wann ist sie das? Zu diesem Thema diskutierten am Montagabend Gäste bei "Hart aber fair". Eingeladen war auch der…
    www.nordbayern.de

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • wenn du meinst

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Also zur Klärung:

    1 Ausrufezeichen: nur Imperativ
    <1 Satzzeichen (?!): Imperativ mit "Zorn-"komplex (à la: noch mit der Faust auf den Tisch hauen um dem ganzen Nachdruck zu verleihen. Da liebe ich den Satz von meinem Deutschlehrer damals: Satzzeichen sind keine Rudeltiere!)
    komplette Wörter in CAPS: gilt im web als schreien

  • Hallo alle Miteinander,

    zunächst möchte ich allen ein gutes aber vor allem ein gesundes neues Jahr 2025 wünschen und mich für die Beiträge bedanken.

    Leider ist aufgrund der Diskussion der Kern der Frage ins Abseits gerückt:

    Worin besteht der Unterschied im Aufruf von Shellexecute, dass dieser funktioniert wenn ich

    ShellExecute("eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""")

    direkt aufrufe und der Aufruf von

    Shellexecute($aArray[9]) -wobei der Inhalt des Indexes 9 exakt der Zeichenfolge des manuellen Aufrufes entspricht., nicht funktioniert und er die Datei nicht findet...

    Die Debugausgabe von ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ShellExecute(' & $aArray[9] & ') - '& @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

    gibt folgendes Ergebnis zurück:

    @@ Debug(14) : ShellExecute("eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""")

    Das zeigt, dass der Shellexecutebefehl exakt gleich ist, also sollte dieser doch auch funktionieren:?:

    Der Vorschlag von Moombas mit Stringsplit macht ja im Grunde nichts anderes als den String des Indexes in 2 Teile zu zerlegen und diese dann zum gleichen Shellexecutebefehl wie oben zusammenzusetzen...



  • Der Vorschlag von Moombas mit Stringsplit macht ja im Grunde nichts anderes als den String des Indexes in 2 Teile zu zerlegen und diese dann zum gleichen Shellexecutebefehl wie oben zusammenzusetzen...

    Nein, da ist ein großer Unterschied.

    ShellExecute ist eine Funktion, die mehrere Parameter nimmt: 1. Den Dateinamen der auszuführenden Datei, 2. Parameter die übergeben werden sollen, 3. Das Arbeitsverzeichnis (der Ordner, von dem alle relativen Pfade im ausgeführten Programm ausgehen),...
    Wenn du im Code ShellExecute("eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""") ausführst ist der 1. Parameter: "eventvwr.exe" und der 2. Parameter: "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml"""
    Es wird also die Executable "eventvwr.exe" ausgeführt.
    Wenn du aber Shellexecute($aArray[9]) mit $aArray[9]="eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""" ausführst, entspricht der 1. Parameter: "eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml"""
    Es wird also versucht, die Executable "eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""" auszuführen, aber es gibt natürlich keine Datei mit dem Namen, kann es auch garnicht, weil bestimmte Zeichen gar nicht erlaubt wären.

    Nur weil du die Ausgabe als String genauso aussehen lässt, heißt das noch lange nicht, dass der Code auch genauso aussieht und es das Gleiche ist.

    Du musst also irgendwie aus deinem $aArray[9] zwei Variablen bekommen, damit du eine als executable für Parameter 1 nehmen kannst und die andere für Parameter 2.
    Das ist es, was Moombas mit dem StringSplit versucht hat. Wobei das vermutlich nicht funktioniert hat, weil bei "eventvwr.exe" die Anführungszeichen mit geschickt werden.
    Aber dafür könnte man sich ja mal mit _ArrayDisplay(StringSplit($aArray[9], ', ', BitOr(1,2))) (benötigt #include <Array.au3>) anschauen, was in dem StringSplit genau rauskommt und ggf. noch die Anführungszeichen entfernen (StringLeft/StringRight/StringMid).


  • Worin besteht der Unterschied im Aufruf von Shellexecute, dass dieser funktioniert wenn ich
    ShellExecute("eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""")
    direkt aufrufe und der Aufruf von
    Shellexecute($aArray[9]) -wobei der Inhalt des Indexes 9 exakt der Zeichenfolge des manuellen Aufrufes entspricht., nicht funktioniert und er die Datei nicht findet...

    Der erste Aufruf übergibt 2 Parameter an Shellexecute, der zweite Aufruf übergibt lediglich einen Parameter.
    Der Inhalt kann also schlicht nicht exakt der Zeichenfolge entsprechen.

    Grundsätzlich: ShellExecute erwartet den Pfad zu einer Datei als 1. Parameter.
    Anhand deren Dateiendung wird in der Registry nachgeschaut wie diese Dateiart zu behandeln ist.
    Sollen noch Parameter übergeben werden, werden diese bei ShellExecute ausschließlich in den 2. Parameter geschrieben.
    Anders sieht es bei Run aus - dort kann ein Gesamtstring übergeben werden.

  • Hallo Kanashius und Aspirinjunkie,

    vielen lieben Dank für eure Erklärungen. Damit ist mir klar warum das nicht funktioniert. Aber es ist schon sehr seltsam, dass das eben seither funktionierte und dann auf einmal
    und das nach Monaten oder Jahren nicht mehr.

    Im Übrigen, der Code von Moombas mit dem Stringsplit funktioniert. Ich habe jedoch den Pfad zur XMl-Datei angepasst (sprich: die Datei nach C:\Daten kopiert) wegen des Freizeichens im Ordnername "Event Viewer". Das spart eine Menge Anführungszeichen und der Code für die Parameter muss nicht angepasst werden.

    Das ist jetzt die Ausgabe von _DebugArraydisplay:

    Row|Col 0
    # 0|"eventvwr.exe"
    # 1|"/v:C:\daten\Views\View_0.xml"

    Auch für Euch ein gutes und vor allen dingen gesundes neues Jahr 2025 und nochmals vielen herzlichen Dank für die Erklärung :klatschen::klatschen::klatschen:

  • Im Übrigen, der Code von Moombas mit dem Stringsplit funktioniert. Ich habe jedoch den Pfad zur XMl-Datei angepasst (sprich: die Datei nach C:\Daten kopiert) wegen des Freizeichens im Ordnername "Event Viewer". Das spart eine Menge Anführungszeichen und der Code für die Parameter muss nicht angepasst werden.

    Das Ding mit den Leerzeichen umgehst du ganz einfach, weshalb (ich persönlich) immer empfehle im Quellcode per default ' für Strings zu nutzen anstatt ".
    Warum das so ist erkläre ich dir gerne hier:

    Dein String mit dem du arbeiten willst enthält einen Pfad und/oder Dateinamen (wie in deiner Situation) mit Leerzeichen, muss also vom System her mit " eingefasst werden.

    AutoIt
    //1:1 String vom Pfad (als Beispiel): C:\dein Ordner\deine Datei.txt
    //1:1 String den das System erwartet: "C:\dein Ordner\deine Datei.txt"
    //In Autoit könnte man dies nun mit mehrfachen " lösen: 
    $String = """C:\dein Ordner\deine Datei.txt"""

    Das sieht aber (aus meiner Sicht) nicht nur unschön aus, sondern kann auch verwirren, gerade bei langen Strings (mit ggf vielen "). Auch muss man das dann immer im Blick haben, falls in einem String auch mal so " vorkommen.
    Original Text Beispiel: Ich bin ein "Test" Text.

    AutoIt
    //Würde man per default " nutzen ohne drüber nachzudenken das dort " drin sind, wäre das in Autoit so: 
    $String = "Ich bin ein "Test" Text." 
    //Und fällt damit sofort auf die Nase, weil hier richtig wäre es so zu machen: 
    $String = "Ich bin ein ""Test"" Text."

    Wenn ich dann diese beiden Beispiele nehme und ' Anwende, ist das besser zu lesen und vor Fehlern besser gefeit, sofern man nicht viele Strings nutzt, die wiederum ' enthalten (da würde man es dann genau andersherum machen):

    AutoIt
    //Beispiel 1: 
    $String = '"C:\dein Ordner\deine Datei.txt"'
    //Beispiel 2: 
    $String = 'Ich bin ein "Test" Text.'
    //Beispiel 3: 
    $String = "Ich bin ein 'Test' Text."

    3 Mal editiert, zuletzt von Moombas (16. Januar 2025 um 15:13)

  • In bestimmten Situationen macht es auch Sinn Leerzeichen ganz aus einem String zu entfernen oder durch einen _ (Unterstrich) zu ersetzen.


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • An welche Situationen denkst Du da? Je konkreter eine Aussage, desto hilfreicher für die Forenteilnehmer :)