如何获取服务可执行文件路径

mrt*_*ndi 1 .net windows-services

有没有在不需要.Net中的管理员执行级别权限的情况下获取正在运行的Windows服务的可执行文件路径?(不会导致UAC获得用户的确认)

Pac*_*ccc 8

这是使用WMI的可能解决方案:

using System.Management;


String query = String.Format("SELECT PathName FROM Win32_Service WHERE Name = '{0}'", serviceName);

using (ManagementObjectSearcher mos = new ManagementObjectSearcher(query)) {
    foreach(ManagementObject mo in mos.Get()) 
        Console.WriteLine(mo["PathName"].ToString());
}
Run Code Online (Sandbox Code Playgroud)

确保将其包装ManagementObjectSearcher在一个using块中,因为它是一种资源,需要妥善处理.

我不确定这是否需要提升权限才能运行,但它确实需要在计算机上安装和运行WMI.要检查WMI是否正在运行,请打开服务管理单元并查找Windows Management Instrumentation.您也可以通过net start winmgmt从命令行运行来启用它.