`
hulunberbus
  • 浏览: 857482 次
文章分类
社区版块
存档分类
最新评论

不使用installutil.exe安装WINDOWS服务

 
阅读更多
using System;
using System.Runtime.InteropServices;
namespace MyServiceInstaller
{

class ServiceInstaller
{
#region Private Variables
private string _servicePath;
private string _serviceName;
private string _serviceDisplayName;
#endregion Private Variables
#region DLLImport
[DllImport("advapi32.dll")]
public static extern IntPtr OpenSCManager(string lpMachineName,string lpSCDB, int scParameter);
[DllImport("Advapi32.dll")]
public static extern IntPtr CreateService(IntPtr SC_HANDLE,string lpSvcName,string lpDisplayName,
int dwDesiredAccess,int dwServiceType,int dwStartType,int dwErrorControl,string lpPathName,
string lpLoadOrderGroup,int lpdwTagId,string lpDependencies,string lpServiceStartName,string lpPassword);
[DllImport("advapi32.dll")]
public static extern void CloseServiceHandle(IntPtr SCHANDLE);
[DllImport("advapi32.dll")]
public static extern int StartService(IntPtr SVHANDLE,int dwNumServiceArgs,string lpServiceArgVectors);
[DllImport("advapi32.dll",SetLastError=true)]
public static extern IntPtr OpenService(IntPtr SCHANDLE,string lpSvcName,int dwNumServiceArgs);
[DllImport("advapi32.dll")]
public static extern int DeleteService(IntPtr SVHANDLE);
[DllImport("kernel32.dll")]
public static extern int GetLastError();
#endregion DLLImport
/// <summary>
/// 应用程序入口.
/// </summary>

[STAThread]
static void Main(string[] args)
{

string svcPath;
string svcName;
string svcDispName;
//服务程序的路径
svcPath = @"C:/MyService.exe";
svcDispName="MyService";
svcName= "MyService";
ServiceInstaller c = new ServiceInstaller();
c.InstallService(svcPath, svcName, svcDispName);
Console.Read();

}

/// <summary>
/// 安装和运行
/// </summary>
/// <param name="svcPath">程序路径.</param>
/// <param name="svcName">服务名</param>
/// <param name="svcDispName">服务显示名称.</param>
/// <returns>服务安装是否成功.</returns>
public bool InstallService(string svcPath, string svcName, string svcDispName)
{
#region Constants declaration.
int SC_MANAGER_CREATE_SERVICE = 0x0002;
int SERVICE_WIN32_OWN_PROCESS = 0x00000010;
//int SERVICE_DEMAND_START = 0x00000003;
int SERVICE_ERROR_NORMAL = 0x00000001;
int STANDARD_RIGHTS_REQUIRED = 0xF0000;
int SERVICE_QUERY_CONFIG = 0x0001;
int SERVICE_CHANGE_CONFIG = 0x0002;
int SERVICE_QUERY_STATUS = 0x0004;
int SERVICE_ENUMERATE_DEPENDENTS = 0x0008;
int SERVICE_START =0x0010;
int SERVICE_STOP =0x0020;
int SERVICE_PAUSE_CONTINUE =0x0040;
int SERVICE_INTERROGATE =0x0080;
int SERVICE_USER_DEFINED_CONTROL =0x0100;
int SERVICE_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED |
SERVICE_QUERY_CONFIG |
SERVICE_CHANGE_CONFIG |
SERVICE_QUERY_STATUS |
SERVICE_ENUMERATE_DEPENDENTS |
SERVICE_START |
SERVICE_STOP |
SERVICE_PAUSE_CONTINUE |
SERVICE_INTERROGATE |
SERVICE_USER_DEFINED_CONTROL);
int SERVICE_AUTO_START = 0x00000002;
#endregion Constants declaration.
try
{
IntPtr sc_handle = OpenSCManager(null,null,SC_MANAGER_CREATE_SERVICE);
if (sc_handle.ToInt32() != 0)
{
IntPtr sv_handle = CreateService(sc_handle,svcName,svcDispName,SERVICE_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START,SERVICE_ERROR_NORMAL,svcPath,null,0,null,null,null);
if(sv_handle.ToInt32() ==0)
{
CloseServiceHandle(sc_handle);
return false;
}
else
{
//试尝启动服务
int i = StartService(sv_handle,0,null);
if(i==0)
{

return false;
}

CloseServiceHandle(sc_handle);
return true;
}
}
else

return false;
}
catch(Exception e)
{
throw e;
}
}
/// <summary>
/// 反安装服务.
/// </summary>
/// <param name="svcName">服务名.</param>
public bool UnInstallService(string svcName)
{
int GENERIC_WRITE = 0x40000000;
IntPtr sc_hndl = OpenSCManager(null,null,GENERIC_WRITE);
if(sc_hndl.ToInt32() !=0)
{
int DELETE = 0x10000;
IntPtr svc_hndl = OpenService(sc_hndl,svcName,DELETE);
if(svc_hndl.ToInt32() !=0)
{
int i = DeleteService(svc_hndl);
if (i != 0)
{
CloseServiceHandle(sc_hndl);
return true;
}
else
{
CloseServiceHandle(sc_hndl);
return false;
}
}
else
return false;
}
else
return false;
}
}
}

分享到:
评论

相关推荐

    installutil.exe

    installutil.exe 下载,可用于service服务程序运行时提供服务。

    第七十二课:基于白名单Installutil.exe执行payload第二季1

    基于白名单installutil.exe配置payload:配置攻击机msf:靶机执行:靶机编译:靶机执行:附录:Micropoor.cs注:x64 paylo

    修改CPU型号 windows服务,开机自动启动

    自定义修改CPU型号,开机有效 安装命令:InstallUtil.exe LMSoft_CPU.exe  启动服务命令:net start EditCpu  关闭服务命令:net stop EditCPU  卸载服务命令:InstallUtil.exe -u LMSoft_CPU.exe

    InstallUtil 服务安装工具

    InstallUtil,用于Windows服务安装的工具,这个是.net 4.0版。

    C# 创建windows服务源码

    C# 创建windows服务首先要安装windows服务利用InstallUtil.exe安装 源代码

    C# 写Windows服务以及客服端

    用项目的输出作为参数,从命令行运行 InstallUtil.exe。在命令行中输入下列代码: installutil ServerTest.exe 卸载服务 用项目的输出作为参数,从命令行运行 InstallUtil.exe。 installutil /u ServerTest.exe ...

    DevExpress+WindowsService+WCF+EF+SQL

    DevExpress+WindowsService+WCF+EF+SQL 一体化搭建起来的框架,调试编译成功后,使用installutil.exe安装windows服务。

    C#代码实现服务程序安装卸载

    程序演示了如何通过代码(不使用InstallUtil.exe)来对C#开发的Windows系统服务程序进行安装和卸载,使用了单独编写的安装程序,安装和卸载在线程中进行,带进度条,界面不锁死。  代码中的解决方案包括2个项目:...

    WCF寄宿Windows服务并通过客户端测试

    您可以将WCFWindowsService中的Bin目录下的Debug文件夹拷贝到C盘或者其他磁盘目录下,然后通过VS2012下的控制台命令工具通过InstallUtil.exe工具将Debug目录下的WCFWindowsService.exe寄宿到WindowsService中;...

    VS调试windows服务

     5、用系统自带的installutil.exe安装服务,win7中installutil.exe的路径是  C:WindowsMicrosoft.NETFramework64v2.0.50727  6、成功安装服务后,启动服务,在资源管理器中或cmd中都行  7

    .net Windows服务程序和安装程序制作

    编写Window服务程序 安装程序制作 通过命令窗口,执行 InstallUtil.exe 服务路径 可安装Window服务,你是不是觉得我在扯,这么长的命令怎么看?怎么记住?可以想想如果客户端是一个不懂程序的人是不可能自己完成安装...

    WhiteListEvasion:脚本、二进制文件等的集合,以帮助 Microsoft Windows 网络上的白名单规避

    白名单规避安装工具用法:python InstallUtil.py [--cs_file cs_filename] [--exe_name exe_filename] [--payload payload] [--lhost lhost] [--lport lport] python InstallUtil.py --cs_file temp.cs --exe_name ...

    NWShelper:用于安装、启动、停止和卸载您开发的 Windows 服务的应用程序

    在开发 Windows 服务时,您必须通过InstallUtil.exe多次安装、启动、停止和卸载它。 此应用程序可帮助您摆脱这种常规 - 您只是在按按钮。 您应该只选择.NET版本,为您的服务找到.exe并设置服务本身的名称。 如果...

    定时收取邮件的Windows服务程序

    -&gt; installutil /u Pop3Service.exe(如果命令行没有在Pop3Service.exe的目录下,要输入全路径) &lt;br&gt; &lt;br&gt;PS: 关于Windows服务的介绍我把它放在资料里了,如果看不懂程序可以去看里面的资料.主要是看如何...

    EarlyStart:打开会话时在Windows资源管理器之前启动程序

    通常对TranslucentTB或Wallpaper Engine这样的资源管理器自定义很有用(尽管后者具有与此类似的自己的启动器服务)安装转到发布页面,下载最新版本并将其解压缩到永久位置。 重要信息: 如果您现在不执行此操作,则...

    CardReadService.rar

    Windows Service 启动 Http Server,两者综合...@%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0CardReadService.exe @sc start CardReadService %PORT% @echo === 安装完成 @echo . @pause

    label-print-service

    您可以使用以下命令安装该服务: installutil.exe PrintServer.exe可以在上找到有关安装服务的更多信息。使用服务服务启动后,该服务会在端口 80 上的任何位置侦听 HTTP 连接。如果您想使用这些设置,您可能需要...

    EasyService:在短短几分钟内将您的控制台应用程序转换为 Windows 服务

    只需几行代码,您就可以获得一个完整的 Windows 服务,该服务可以使用调试器进行调试并通过运行service.exe install 。 好处 专注于您的服务逻辑,而不是学习 .NET Service API 和 InstallUtil 的细节。 将任何...

    Cn99DynDNS[动态域名更新程序]

     http://www.3322.org 动态域名自动更新程序,和官方网站提供的Windows程序的区别是本程序能自动加载至Windows服务里,可以随系统一起运行,防止了好多使用3322域名的动态IP主机不登录不能更新IP的问题。...

    通过服务启动或终止指定应用程序

    1、使用.Net Framework目录下的命令installutil安装服务 installutil (服务程序的绝对路径) 如:C:\Windows\Microsoft.NET\Framework\v4.0.30319&gt;installutil "D:\RunAsSrv\runassrv.exe" 2、在服务程序的绝对...

Global site tag (gtag.js) - Google Analytics