Ich möchte bestimmte Systemaufrufe überwachen können, die von einem Prozess ausgeführt werden, hauptsächlich Datei-E/A-Aufrufe. Unter Linux kann ich wahrscheinlich mit geeigneten Parametern strace verwenden, aber wie kann ich das unter Windows machen?Überwachung bestimmter Systemaufrufe, die von einem Prozess in Windows ausgeführt werden
Ich bin in erster Linie daran interessiert, einen Prozess auszuführen und herauszufinden, welche Dateien er gelesen und geschrieben hat.
EDIT: Ich möchte dies programmgesteuert von einem anderen Prozess aus tun. Ich kenne ProcessMonitor, möchte aber die Daten in einer Form erhalten, die ich zur weiteren Analyse in ein anderes Programm importieren kann.
EDIT: Wenn ich meine Anforderungen noch weiter eingrenzen, ist es wahrscheinlich genug, um Aufrufe von CreateFile() zu überwachen. Ich bin wirklich nur daran interessiert, welche Dateien geöffnet sind und ob sie zum Lesen/Schreiben geöffnet sind oder nur gelesen werden. Eine weitere Anforderung, die ich nicht wirklich angegeben habe, ist, dass Geschwindigkeit ziemlich wichtig ist; Ich plante, dies für Dinge wie das Kompilieren einer C++ - Datei zu tun, und das Hochziehen einer vollständigen GUI, die eine 20MB Logdatei erzeugt, wird einen übermäßigen Aufwand haben.
EDIT: Es wäre auch nett, wenn es keine Administratorrechte erfordern würde.
Interessant. Gibt es etwas Ähnliches wie Linux ptrace syscall in Windows? Alle Antworten beziehen sich auf die Verwendung anderer Programme, aber mit etwas wie ptrace() könnten Sie es selbst machen. – ktulur
Falls Sie an einem anderen Ansatz interessiert sind, habe ich nach einem Windows-Pendant zu ptrace gefragt: http://stackoverflow.com/questions/865106/is-there-something-like-linux-ptrace-syscall-in- Windows – ktulur