【问题标题】:Get list of all possible command line arguments for an exe获取 exe 的所有可能的命令行参数列表
【发布时间】:2012-07-21 15:26:46
【问题描述】:

我是否可以获取 exe 的可用命令行参数列表?我需要创建一个 Powershell 脚本来启动 Relius Agent Manager 程序,但该程序需要数据库登录名和密码信息才能加载。

我可以获得登录/传递信息,但我需要知道传递它们所需的参数的名称。

无论我使用 Powershell 还是 C# 来检索参数列表,我只需要知道它们的名字即可。

我阅读了 C# 中的 Process 类,但我没有看到任何实际列出可用参数的内容,只有如何列出进程启动时传递的内容。

【问题讨论】:

  • AFAIK 这在任何编程语言中都不应该是可能的。但是,您可以做的是打开 CMD/bash/whatever 并运行 <myprogram.exe> --help<myprogram.exe> /? 并查看是否为您提供了可用的参数。
  • 不,我认为这不可能。对于任何程序,“参数数量”只不过是字符串。在 C 中,这些参数作为 int argc、char *argv 传递。长话短说,除了解析可能的“帮助”输出之外,您还被卡住了。
  • 我同意其他评论者的观点。您将受到解析使用输出的支配。如果exe甚至提供它。这是 PowerShell 命令优于命令行 exe 的一大好处。 PowerShell 为所有 PowerShell 命令提供参数解析引擎,提供解析一致性 (- vs /)、位置参数、参数名称消歧以及获取参数信息的能力,例如Get-Command Get-Process -Syntax.

标签: c# .net oracle powershell


【解决方案1】:

无法查询支持的命令行参数。尝试从不带参数、带无效参数、带 /h、/?、-h、--help 和类似参数的命令提示符处运行程序,以查看其中一个是否提示程序输出允许的参数列表。

【讨论】:

    【解决方案2】:

    感谢您的所有帮助。我可以通过让某人手动启动它然后登录来解决它,然后我使用以下命令检查了所有正在运行的进程的列表:

    "WMIC /OUTPUT:C:\ProcessList.txt PROCESS 获取 Caption,Commandline,Processid"

    然后,我能够准确地找到从命令生成的文件运行时传递的内容,并使用类似以下内容在 PowerShell 中执行该命令:

    $exp = "&'C:\path\to\the\exe.exe' /param1 /param2 /param3" 调用表达式 $exp

    【讨论】:

      【解决方案3】:

      搜索通用静音开关查找器。实际上可以以编程方式进行,但需要深入研究二进制可执行文件。有兴趣请查看http://code.google.com/p/pefile/wiki/PEiDSignatures

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 2013-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-26
        相关资源
        最近更新 更多