Aufruf des Eventviewers funktioniert nicht mehr

  • Hallo Gemeinde,


    VERZWEIFLUNG PUR


    ich habe bereits in 2019 ein AutostartProgramm erstellt, das bisher perfekt funktionierte. Seit Mitte letzter Woche aber lässt sich der Eventviewer nicht mehr starten...


    Ich habe alles was ich nach dem Rechnerstart geöffnet haben möchte in einer Textdatei stehen.

    Auszug:

    E:\Downloads\KeePass-2.57\KeePass.exe
    "C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE"
    .
    .
    .
    .
    .
    .
    "eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml"""


    Rufe ich die Letzte Zeile mit ShellExecute("eventvwr.exe", "/v:""C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml""") auf, funktioniert der Aufruf und die Benutzerdefinierte Ansicht wird geöffnet.

    Rufe ich hingegen den Aufruf mittels vorher ausgelesener Text-Datei auf (FileReadToArray) bekomme ich den Fehler: "Datei nicht gefunden..."


    Der Aufruf aus Zeile 5 funktioniert. In Zeile 6 habe ich den Inhalt des Indexes aufgeführt.
    :?:Hat jemand eine Idee warum die Zeile 13 dennoch nicht funktioniert?
    :?:und warum hat das seit Mitte 2019 funktioniert und seit letzter Woche nicht mehr?????

  • Ganz einfach, weil das eine Funktion ist und getrennt werden muss:

    AutoIt
    ShellExecute(Stringsplit($aArray[9], ',')[1], Stringsplit($aArray[9], ',')[2])

    Hoffe das passt soweit.

    Du musst dann aber das hinter dem , ändern in: /v:"C:\ProgramData\Microsoft\Event Viewer\Views\View_1.xml"

    2 Mal editiert, zuletzt von Moombas (20. Dezember 2024 um 14:49)

  • Bedenke auch, das dein Array, so wie du es hier hast, 0-basiert ist, sprich in Zeile 9 (nehme ich deine Beispiel Zeilen aus dem Beitrag) ist nix mehr.
    Ich hoffe aber das du hier schlicht einen '.' als zus. Zeile vergessen hast.

    Ich selber verwende lieber _FileReadToArray($sPfad, $aArray)als Local $aArray = FileReadToArray($sPfad), da dort in Zeile 0 die Anzahl der Zeilen gleich abgelegt wird und somit auch ein 1-basiertes Array entsteht.

    Daher sähe mein Beispielcode auch eher so aus:

    Und wenn ich ehrlich bin zweifel ich ein wenig daran das der Code so wie du es oben gepostet hast jemals so funktioniert hat für den Aufruf ShellExecute($aArray[9]) mit Parametern.

    Warum nutzt du nicht einfach Shortcuts im Autostart Ordner? dann brauchst du sowas nicht!?

    Und noch eine Empfehlung nebenbei: Ich würde eher eine INI Datei bei sowas nehmen à là:

    Code
    [Prog1]
    exe=
    parameter=
    [Prog2]
    exe=
    parameter=
    ...

    Das lässt sich dann schön sauber durch arbeiten mit iniread-Funktionen

    Einmal editiert, zuletzt von Moombas (20. Dezember 2024 um 15:10)

  • Ich kann Moombas nur beipflichten!

    Ini Dateien Ini Dateien und nochmals Ini Dateien. Das scheint hier bei vielen etwas zu sein, was sträflich vernachlässigt wird! Ich kann mir eigentlich gar nicht vorstellen ein Autoit Progrämmchen OHNE Ini zu schreiben.


    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)

  • mal kurz OffTopic,

    ich denke ini-Dateien haben ursprünglich den Zweck,
    dass man Parameter aus dem Programm auslagert, damit der Nutzer des Programms selbst gewisse Dinge beeinflussen kann.
    Für interne programatische Zwecke bietet sich meiner Ansicht nach eher die Registry an.

    Hängt aber immer vom Anwendungsfall ab.
    Pauschalisieren würde ich das Thema nicht.

    OffTopic Ende :)

    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.

  • Schnuffel Du schreibst.... dass man Parameter aus dem Programm auslagert, damit der Nutzer des Programms selbst gewisse Dinge beeinflussen kann....

    was man auslagert will man ja wohl auch wieder einlagern... also in die ini schreiben aus der ini lesen.

    Da ist es ja wohl egal was mit den ini Werten gemacht wird. Da ich ein Anhänger "poertabler Software" bin un was man so in Autoit schreibt ja wohl auch eher "portabel" ist bieten sich ini Dateien an. Die kann man mit der exe transportieren und muss nicht mühsam neue reg Einträge produzieren!

    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)

  • mal kurz OffTopic,

    ich denke ini-Dateien haben ursprünglich den Zweck,
    dass man Parameter aus dem Programm auslagert, damit der Nutzer des Programms selbst gewisse Dinge beeinflussen kann.
    Für interne programatische Zwecke bietet sich meiner Ansicht nach eher die Registry an.

    Hängt aber immer vom Anwendungsfall ab.
    Pauschalisieren würde ich das Thema nicht.

    OffTopic Ende :)

    Ich stimme dem Grundsätzlich zu aber registry schreiben, würde auch bedeuten, sie aufzuräumen wenn es nciht mehr benötigt wird.

    Und das vergessen viele wodurch durch einige Programme mit der Zeit unnötiger Datenmüll in der Registry landet ohne entfernt zu werden nach der Deinstallation.

  • Naja,

    ob eine Deinstallationsroutine eine ini-Datei löscht oder einen Registry Zweig ....

    Sind beides Einzeiler ;)

    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.

  • Naja,

    ob eine Deinstallationsroutine eine ini-Datei löscht oder einen Registry Zweig ....

    Sind beides Einzeiler ;)

    Richtig aber eher löscht der user im "Notfall" den immer noch vorhandenen Programm Ordner, als in der Registry danach zu suchen.

    Ja, dann gibts noch die "moderne" Variante wo das alles dann in den Benutzer Ordnern gespeichert wird...aber lassen wir hier mal die Kirche im Dorf ;)

    Und ja, ich bin der Meinung ein per Installer installiertes Programm sollte einen Deinstaller mitbringen, der ALLE Dateien und Registry Einträge entfernt, die vom Programm/Installer angelegt wurden. Alles andere hat bitte die Finger von der Registry oder loakeln "versteckt" abgelegten Dateien zu lassen. Aber ich weiß: Das bleibt ein Traum

  • Regestry bei Deinstalation säubern - das gibt es doch... man muss nur einen Uninstaler benutzen ... die können das weit besser als die Windows Routinen (bei Windows hat sich da, im Prinzip, seit 95 nichts geändert)

    Ohne Reklame machen zu wollen z.B. Geek Uninstaller macht das weit besser als Windows.

    Im übrigen können *.ini Dateien auch "kleine Datenbanken" ersetzen. So als Beispiel du benötigst von 1000 oder 2000 Kunden Mail Adressen zum versenden von pdf-Rechnungen? Die stehen wunderbar in einer *.ini (Ich mache das seit 5 Jahren, so ohne Probleme)

    Gruß


    Peter


    Ps.: Bitte nicht schlagen - wegen Ini Ersetzt Datenbank aber in gewissen Umfang -- geht das

    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)

  • Zitat

    Registry bei Deinstalation säubern - das gibt es doch... man muss nur einen Uninstaler benutzen ...

    Was habe ich da geschrieben!?

    Zitat

    Und ja, ich bin der Meinung ein per Installer installiertes Programm sollte einen Deinstaller mitbringen, der ALLE Dateien und Registry Einträge entfernt...

    Das findet aber bei einem in AutiIt selbst geschriebenen Programm wohl in den meisten Fällen keine Anwendung...

  • übrigen können *.ini Dateien auch "kleine Datenbanken" ersetzen. So als Beispiel du benötigst von 1000 oder 2000 Kunden Mail Adressen zum versenden von pdf-Rechnungen? Die stehen wunderbar in einer *.ini (Ich mache das seit 5 Jahren, so ohne Probleme)

    Normalerweise wird da ja Excel als "Datenbankersatz" missbraucht.

    Welchen Vorteil bringt da eine .ini-Datei? Warum nimmst Du dann nicht gleich SQLite?

    Bin immer für neue Ideen offen.

  • naja eine ini braucht keine zus. Installationen und DB handling aber in dem von ihm genannten Beispiel würde ich das wohl auch eher in einer DB machen (welche man dann auch immer auswählt)...

  • ;kuNr=e-mail_kunde;individual_betreff;individual_absender;

    4711=rechnungen@koel.de;Ihre PdfRechnung;re@lieferant.de;

    4712=re@test.de;Ihre Rechnung wie vereinbart;lieferant@lieferant.de;

    ----------------------

    Wozu da mit einer Datenbank rumhaspeln? Die muss aufgesetzt werden, will gepflegt werden usw usw usw

    ............

    Die Daten in der *ini ändern sich so gut wie nicht. Es kommt nur ab und an ein Kunde dazu. Mit notepad ++ kann man das von hinten nach vorne durchsuchen, wenn man will....und das eingeben dauert sicher nicht länger als in einer Datenbank.

    Alles bei Programmstart in ein Array einlesen und fertig.... das Programm läuft zeitgesteuert und versendet die Rechnungen des Tages an die Kunden die Rechnungen per Mail wünschen... gestartet zeitgesteuert Mo-fr gegen 18:50

    ob das ein paar Sekunden länger dauert oder nicht ist mir wurscht, sitzt ja keiner vorm Bildschirm läuft vollautomatisch.

    LG

    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)

  • My 2 Cents dazu:

    Für dein skizziertes Beispiel Peter S. Taler mag dein Ansatz mit der INI vollkommen ausreichend sein. Aus meiner Sicht ist der Nutzen einer INI damit zwar zweckentfremdet, doch wenn du damit gute Erfahrungen hast - ist doch top.

    Anders sieht es sicherlich aus, sobald die Komplexität steigt und es nicht nur um ein paar wenige Felder (Spalten) geht.
    Eine der Ideen hinter (relationalen) Datenbanken ist es, dass man per Abfragen sehr schnell und sehr flexibel sich verschiedene Ergebnisse (verschiede Spalten und deren Werte), auch gern aus mehreren Quellen (Tabellen), ausgebenlassen kann.

    Diese Logik (queries) ist (per SQL) deutlich schlanker und schneller umgesetzt, als die Arbeit mit Arrays in AutoIt.
    Trotzdem, mein Beispiel hier spricht eine höhere Komplexität an als die von dir beschrieben - daher alles gut 🤝 .

    Viele Grüße
    Sven

  • Wozu da mit einer Datenbank rumhaspeln? Die muss aufgesetzt werden, will gepflegt werden usw usw usw

    Nun ja, eine DB habe ich genauso schnell aufgesetzt und pflegen muss man beide.

    Aber das ist ok, denn jeder macht so wie er denkt und was für mich gilt, muss nicht auch für Andere gelten.

    Schönen Abend noch.

  • schneller als rechte Maustaste neu/textdokument test.ini? :rofl::rofl::rofl::rofl::rofl:

    Das glaube ich nicht :rofl::rofl::rofl::rofl::rofl::rofl:

    Man sollte anlegen der Datenbank / *.ini Datei nicht mit Eingabe der Daten verwechseln. Denn schneller als Neues Textdokument erstellen KAN man keine Datenbank aufsetzen!!!

    LG

    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)

  • Hi zusammen 👋 ,

    ich finde es gut, dass so viele Ideen, Meinungen und Vorschläge zu diesem Thread hier zusammen kommen.
    Dennoch möchte ich den Hinweis geben, dass wir etwas abschweifen vom eigentlichen Thema bzw. von der Fragestellung im post #1.

    Es gibt im Forum die Rubrik "Datenbanken" unter welcher sich ausführlich zu SQL, INIs etc. ausgetaucht werden kann. Ich begrüße es stark, wenn jemand dort einen neuen Thread aufmacht und Beispiele zeigt - zumindest wäre dies mein Ansatz 😇 .

    Viele Grüße
    Sven

  • Bei INI-Dateien stößt man bald auf Limitierungen wie die 32K Grenze oder Unicode. Die lassen sich entweder gar nicht umgehen oder nur mit mehr/weniger Aufwand.
    Das sollte man bei der Auswahl der Datenspeicherung im Kopf haben :)