Windows 包装可执行文件以对其进行诊断';祈祷

Windows 包装可执行文件以对其进行诊断';祈祷,windows,scripting,Windows,Scripting,我有一个Windows可执行文件(whoami),它经常崩溃。它从另一个进程调用,以获取有关当前用户和域的详细信息。我想知道当它失败时会传递哪些参数 是否有人知道一种适当的方法来包装进程,并在调用进程的同时将其命令行参数写入日志 假设命令是这样使用的: “whoami.exe/all” 我希望存在一个脚本,而不是whoami.exe(具有相同的文件名),它将把调用写入日志,然后将调用传递给实际进程。您没有注意到是哪种编程语言。如果这是您想要的,那么从.bat文件是不可行的,但是您可以用任何编程语

我有一个Windows可执行文件(whoami),它经常崩溃。它从另一个进程调用,以获取有关当前用户和域的详细信息。我想知道当它失败时会传递哪些参数

是否有人知道一种适当的方法来包装进程,并在调用进程的同时将其命令行参数写入日志

假设命令是这样使用的: “whoami.exe/all”


我希望存在一个脚本,而不是whoami.exe(具有相同的文件名),它将把调用写入日志,然后将调用传递给实际进程。

您没有注意到是哪种编程语言。如果这是您想要的,那么从.bat文件是不可行的,但是您可以用任何编程语言来实现。C中的示例:

int main(int argc, void **argv)
{
    // dump contents of argv to some log file
    int i=0;
    for (i=0; i<argc; i++)
        printf("Argument #%d: %s\n", argv[i]);
    // run the 'real' program, giving it the rest of argv vector (1+)
    // for example spawn, exec or system() functions can do it
    return 0; // or you can do a blocking call, and pick the return value from the program
}
int main(int argc,void**argv)
{
//将argv的内容转储到某个日志文件
int i=0;

对于(i=0;i查找whoami.exe,备份它,用您自己的可执行文件替换它,然后查看如何处理它的参数(可能将它们保存在文本文件中)。

我认为使用“脚本”不起作用,因为中间版本应该有一个.exe扩展名,以便您的策略能够工作

为此,我将编写一个非常小的命令行程序;类似于以下内容(用Delphi/Virtual Pascal编写,因此它将生成Win32可执行文件,但任何编译语言都应该这样做):


你不能仅仅改变调用程序来记录它用来调用进程的参数和退出代码吗? 这比从批处理文件中挖掘whoami.exe要容易得多:

echo Parameters: %* >> logfile.txt
whoami.exe %*

需要注意的是,如果参数包含空格,则可能会出现问题(并且您在转义中传递了“),因为命令行解析器基本上会取消转义,在传递给其他可执行文件之前,应该重新转义它们。

如果可以重现崩溃,请在崩溃进程终止之前使用Process Explorer查看其命令行


谢谢,我不在乎它是用哪种语言编写的。理想情况下,我希望有一种方法可以操纵批处理脚本,使其像使用shell脚本一样伪装成可执行文件,然后执行流重定向。我猜Windows希望编译.exe代码。实际上,我仍然需要用这个ba替换whoami.exetch.有没有办法做到这一点?不,我认为你做不到。像这样的脚本可以满足你的需要,但不能有.exe扩展名。唉,我无法控制调用程序
echo Parameters: %* >> logfile.txt
whoami.exe %*