【问题标题】:Path from process name that is NOT running未运行的进程名称的路径
【发布时间】:2011-11-30 18:11:04
【问题描述】:

我想在不运行进程的情况下从进程名称中获取完整路径。换句话说,C# 在执行以下操作时获取绝对路径:

Process.Start(startInfo);

startInfo 不包含绝对路径。

【问题讨论】:

  • 所以你只想要 WHERE 命令的 C# 等效项?
  • 例如:我知道进程名称 abc.exe。我想知道它的绝对路径。但不想运行它。
  • 您可以使用Process.Start 执行Windows WHERE 命令,并读取输出。

标签: c# windows windows-services


【解决方案1】:

可执行文件的完整路径通过 %PATH% 环境变量解析。您可以按如下方式复制该行为:

var result = Environment.GetEnvironmentVariable("PATH")
                        .Split(';')
                        .Select(path => Path.Combine(path, "notepad.exe"))
                        .FirstOrDefault(path => File.Exists(path));

// result == "C:\\Windows\\system32\\notepad.exe"

【讨论】:

  • 您还必须检查当前目录。
【解决方案2】:

使用标准 Windows 搜索策略:PATH 环境变量中的当前文件夹和文件夹。

【讨论】:

    【解决方案3】:

    也许我理解错了,但是呢:

    var fInfo = new FileInfo(startInfo.FileName);
    var fullPath = fInfo.FullName;
    

    ?

    【讨论】:

    • 我知道进程名称 abc.exe。我想知道它的绝对路径。但不想运行它。
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多