【问题标题】:Getting the name of what program ran an console app [duplicate]获取运行控制台应用程序的程序的名称[重复]
【发布时间】:2017-06-27 08:04:11
【问题描述】:

我需要获取启动我在 Visual Studio 中制作的控制台应用程序的程序的名称。关于如何做到这一点的任何想法?

我这样做是为了了解公司内的机器人运行了多长时间以及它们何时运行。

【问题讨论】:

标签: c# visual-studio


【解决方案1】:

你可以像这样获取其他一些进程的父进程:

public static Process GetParentProcess(Process process)
{
    string query = "SELECT ParentProcessId FROM Win32_Process WHERE ProcessId = " + process.Id;
    using (ManagementObjectSearcher mos = new ManagementObjectSearcher(query))
    {
        foreach (ManagementObject mo in mos.Get())
        {
            if (mo["ParentProcessId"] != null)
            {
                try
                {
                    var id = Convert.ToInt32(mo["ParentProcessId"]);
                    return Process.GetProcessById(id);
                }
                catch
                {
                }
            }
        }
    }
    return null;
}

在您的控制台应用程序中,您可以像使用它一样

var parent = GetParentProcess(Process.GetCurrentProcess());

您可以从中获取有关父进程的所有信息。

【讨论】:

    【解决方案2】:

    如果您可以修改控制台应用程序的调用,则可以将程序名称作为参数。

    【讨论】:

    • 我只能修改正在启动的应用程序。
    • 其他应用程序如何启动你的?呼叫是硬编码的吗?因为如果不是,您始终可以在调用字符串中指定新参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多