代码如下:
usingsystem;
usingsystem.runtime.interopservices;
namespacemyserviceinstaller
{
classserviceinstaller
{
#regionprivatevariables
privatestring_servicepath;
privatestring_servicename;
privatestring_servicedisplayname;
#endregionprivatevariables
#regiondllimport
[dllimport(“advapi32.dll”)]
publicstaticexternintptropenscmanager(stringlpmachinename,stringlpscdb,intscparameter);
[dllimport(“advapi32.dll”)]
publicstaticexternintptrcreateservice(intptrsc_handle,stringlpsvcname,stringlpdisplayname,
intdwdesiredaccess,intdwservicetype,intdwstarttype,intdwerrorcontrol,stringlppathname,
stringlploadordergroup,intlpdwtagid,stringlpdependencies,stringlpservicestartname,stringlppassword);
[dllimport(“advapi32.dll”)]
publicstaticexternvoidcloseservicehandle(intptrschandle);
[dllimport(“advapi32.dll”)]
publicstaticexternintstartservice(intptrsvhandle,intdwnumserviceargs,stringlpserviceargvectors);
[dllimport(“advapi32.dll”,setlasterror=true)]
publicstaticexternintptropenservice(intptrschandle,stringlpsvcname,intdwnumserviceargs);
[dllimport(“advapi32.dll”)]
publicstaticexternintdeleteservice(intptrsvhandle);
[dllimport(“kernel32.dll”)]
publicstaticexternintgetlasterror();
#endregiondllimport
///<summary>
///应用程序入口.
///</summary>
[stathread]
staticvoidmain(string[]args)
{
stringsvcpath;
stringsvcname;
stringsvcdispname;
//服务程序的路径
svcpath=@”c:myservice.exe”;
svcdispname=”myservice”;
svcname=”myservice”;
serviceinstallerc=newserviceinstaller();
c.installservice(svcpath,svcname,svcdispname);
console.read();
}
///<summary>
///安装和运行< br> ///</summary>
///<paramname=”svcpath”>程序路径.</param>
///<paramname=”svcname”>服务名</param>
///<paramname=”svcdispname”>服务显示名称.</param>
///<returns>服务安装是否成功.</returns>
publicboolinstallservice(stringsvcpath,stringsvcname,stringsvcdispname)
{
#regionconstantsdeclaration.
intsc_manager_create_service=0x0002;
intservice_win32_own_process=0x00000010;
//intservice_demand_start=0x00000003;
intservice_error_normal=0x00000001;
intstandard_rights_required=0xf0000;
intservice_query_config=0x0001;
intservice_change_config=0x0002;
intservice_query_status=0x0004;
intservice_enumerate_dependents=0x0008;
intservice_start=0x0010;
intservice_stop=0x0020;
intservice_pause_continue=0x0040;
intservice_interrogate=0x0080;
intservice_user_defined_control=0x0100;
intservice_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);
intservice_auto_start=0x00000002;
#endregionconstantsdeclaration.
try
{
intptrsc_handle=openscmanager(null,null,sc_manager_create_service);
if(sc_handle.toint32()!=0)
{
& nbsp; intptrsv_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);
returnfalse;
}
else
{
//试尝启动服务
inti=startservice(sv_handle,0,null);
if(i==0)
{
returnfalse;
}
closeservicehandle(sc_handle);
returntrue;
}
}
else
returnfalse;
}
catch(exceptione)
{
throwe;
}
}
///<summary>
///反安装服务.
///</summary>
///<paramname=”svcname”>服务名.</param>
publicbooluninstallservice(stringsvcname)
{
  ; intgeneric_write=0x40000000;
intptrsc_hndl=openscmanager(null,null,generic_write);
if(sc_hndl.toint32()!=0)
{
intdelete=0x10000;
intptrsvc_hndl=openservice(sc_hndl,svcname,delete);
if(svc_hndl.toint32()!=0)
{
inti=deleteservice(svc_hndl);
if(i!=0)
{
closeservicehandle(sc_hndl);
returntrue;
}
else
{
closeservicehandle(sc_hndl);
returnfalse;
}
}
else
returnfalse;
}
else
returnfalse;
}
}
}
您可能感兴趣的文章:使用WindowsAPI获取录音音频的方法python调用windowsapi锁定计算机示例C#中调用WindowsAPI的技术要点说明基于WindowsAPI分解路径问题的详解WindowsAPI函数大全(完整)WINDOWS2000下使用ISAPI方式安装PHPWindows程序内部运行机制实例详解Windows中使用计划任务自动执行PHP程序实例深入详解C编写Windows服务程序的五个步骤使用WindowsAPI实现播放PCM音频的方法
利用windows性能计数器进行服务器性能监控示例分享
C++使用CriticalSection实现线程同步实例
上述就是C#学习教程:使用winapi安装Windows服务示例程序分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905186.html