Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows服务*非*在我的项目中的位置_C#_.net_Windows Services - Fatal编程技术网

C# Windows服务*非*在我的项目中的位置

C# Windows服务*非*在我的项目中的位置,c#,.net,windows-services,C#,.net,Windows Services,如果我右键单击并在“服务”对话框中选择某个服务的属性(比如,即插即用),我会得到几条信息,包括“可执行文件的路径”。对于即插即用(在Vista中),这是: C:\Windows\system32\svchost.exe-k DcomLaunch 如果我知道服务名称(和/或显示名称),是否有办法使用.NET代码获取相同的信息 (我无法使用getExecutionGassembly(),因为我没有从我的项目运行服务。)此信息在结构中。您将需要使用P/Invoke将其取出 基本过程是: 调用OpenS

如果我右键单击并在“服务”对话框中选择某个服务的属性(比如,即插即用),我会得到几条信息,包括“可执行文件的路径”。对于即插即用(在Vista中),这是:

C:\Windows\system32\svchost.exe-k DcomLaunch

如果我知道服务名称(和/或显示名称),是否有办法使用.NET代码获取相同的信息


(我无法使用
getExecutionGassembly()
,因为我没有从我的项目运行服务。)

此信息在结构中。您将需要使用P/Invoke将其取出

基本过程是:

调用OpenSCManager获取所管理服务的句柄

调用OpenService以获取该服务的句柄


调用QueryServiceConfig以获取查询服务配置结构。

此信息位于结构中。您将需要使用P/Invoke将其取出

基本过程是:

调用OpenSCManager获取所管理服务的句柄

调用OpenService以获取该服务的句柄


调用QueryServiceConfig以获取查询服务配置结构。

另一个没有互操作的选项是WMI查找(或注册表位hacky!)

下面是一个快速示例,基于:


另一个没有互操作的选项是WMI查找(或注册表位hacky!)

下面是一个快速示例,基于:


始终存在所述的WMI类
Win32\u服务
,特别是
路径名

这项工作:

ManagementClass mc = new ManagementClass("Win32_Service");
foreach(ManagementObject mo in mc.GetInstances())
{
    if(mo.GetPropertyValue("Name").ToString() == "<Short name of your service>")
    {
        return mo.GetPropertyValue("PathName").ToString().Trim('"');
    }
}
ManagementClass mc=新的ManagementClass(“Win32_服务”);
foreach(mc.GetInstances()中的ManagementObject mo)
{
if(mo.GetPropertyValue(“Name”).ToString()=“”)
{
返回mo.GetPropertyValue(“路径名”).ToString().Trim(“”);
}
}

如果您有任何与引用相关的问题,请在项目中添加的引用。

始终存在所述的WMI类
Win32\u服务
,特别是
路径名

这项工作:

ManagementClass mc = new ManagementClass("Win32_Service");
foreach(ManagementObject mo in mc.GetInstances())
{
    if(mo.GetPropertyValue("Name").ToString() == "<Short name of your service>")
    {
        return mo.GetPropertyValue("PathName").ToString().Trim('"');
    }
}
ManagementClass mc=新的ManagementClass(“Win32_服务”);
foreach(mc.GetInstances()中的ManagementObject mo)
{
if(mo.GetPropertyValue(“Name”).ToString()=“”)
{
返回mo.GetPropertyValue(“路径名”).ToString().Trim(“”);
}
}
如果您有任何与引用相关的问题,请在项目中添加引用