【问题标题】:How to find whether an executable is in the PATH without iterating all the folders on the path (or executing it)如何在不迭代路径上的所有文件夹(或执行它)的情况下查找可执行文件是否在 PATH 中
【发布时间】:2011-11-06 21:01:31
【问题描述】:

我知道操作系统和 API 之间的文件操作相当不标准,但我想知道路径中是否存在可执行文件(在运行时命名)。

这是对用户输入的验证,稍后会调用应用程序

        ProcessStartInfo ^processStartInfo = gcnew ProcessStartInfo("ReallyCool.exe");
        Process ^process = gcnew Process();
        process->StartInfo = processStartInfo;
        bool processStarted = process->Start();

仅当涉及到上面的最后一行时才会抛出。

有谁知道我如何在冒着实际执行文件的风险之前验证该文件是否存在,或者我是通过允许用户通过我的应用程序运行“.exes”来天真吗?

根据标题,我希望尽可能避免明确搜索路径上的每个目录。我也不确定如何从 .NET 编码中获取 Windows 路径。

【问题讨论】:

    标签: .net windows winapi path filesystems


    【解决方案1】:

    要检查文件是否存在,请使用bool doesFileExist = System.IO.File.Exists(path);

    我怀疑是否有一种简单的方法可以在不尝试运行的情况下知道它是否是有效的可执行文件。

    【讨论】:

    • 谢谢,剩下的一个复杂性是提供路径中的每个目录,但您的代码让我的事情变得更容易。
    • 您需要在给定路径的子文件夹中查找文件吗?
    • 我需要查看客户端 PC 搜索可执行文件的确切路径。我认为它类似于 DOS shell 中的 %PATH% ,但我不知道如何以编程方式使用 WinAPI 或 .NET 为任何 Windows PC 获取它。
    • System.Environment.GetEnvironmentVariable("PATH")
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2021-08-28
    • 2011-02-08
    • 2017-04-28
    相关资源
    最近更新 更多