c怎么写服务

1. 用C语言编写Windows服务程序的五个步骤

Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,以及何时调用,但 C++ 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。在你对服务程序有了充分透彻的理解之后,用 C++ 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就非常容易解释 NT 服务之所以然。

2. 怎么把一个程序写入服务

要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务, Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里,如果你没有,自己下载

把这两个程序保存在一个方便的位置,例如C盘根目录下。举例来说明,把OE作为一个服务添加进Windows XP Professional操作系统中,并把这个服务命名为“Mail”。在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\ instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail 则是你想添加的服务名称。

运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为 “Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行的程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中。到现在,这个服务已经成功的添加并且设置好了。如果你希望做的更加专业,可以在Mail服务下建立一个名为 Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述

接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置。在“General”选项卡上,我们需要设置这个服务的运行方式,在图二中可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。

注销一下看看。为了让你看清除,先打开OE,这时在任务管理器里,有两个msimn进程,用户名为“.com.cn”的是打开的OE,而用户名为“SYSTEM”的就是添加的服务。

如果你不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除。方法是在命令行下输入“c:\ instsrv.exe Mail remove”,然后回车就可以了。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用。

3. 如何用C语言来编写一个管理系统服务的程序

这个是删除服务的函数。。不过动的API,,你还是补习补习吧

BOOL Uninstall()

{

if ( !IsInstalled() )

return TRUE;

SC_HANDLE hSCM = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );

if ( hSCM == NULL )

{

//MessageBox( NULL, _T( "打开服务管理器失败!" ), szServiceName, MB_OK );

return FALSE;

}

SC_HANDLE hService = OpenService( hSCM, szServiceName, SERVICE_STOP | DELETE );

if ( hService == NULL )

{

CloseServiceHandle( hSCM );

MessageBox( NULL, _T( "服务不存在!" ), szServiceName, MB_OK );

return FALSE;

}

SERVICE_STATUS status;

ControlService( hService, SERVICE_CONTROL_STOP, &status );

BOOL bDelete = DeleteService( hService );

CloseServiceHandle( hService );

CloseServiceHandle( hSCM );

if ( bDelete )

{

MessageBox( NULL, _T( "删除服务成功!" ), szServiceName, MB_OK );

return TRUE;

}

MessageBox( NULL, _T( "删除服务失败!" ), szServiceName, MB_OK );

//LogEvent(_T("Service could not be deleted"));

return FALSE;

}

调用API函数OpenSCManager()和连接SCM(服务控制管理器)

调用API函数OpenService()打开服务,有2个参数,一个为服务名,一个为执行权限;返回服务句柄

启动服务StartService();第一个参数就是服务句柄

停止服务ControlService()和上面的一样

QueryServiceStatus()查询服务当前状态,这个函数填充一个SERVICE_STATUS类型结构,获取服务当前的一些信息

4. C语言中断端服务程序怎么编写啊

/**************************标准写法如下*****************************************************/

void name (void) interrupt 中断号 using 工作寄存器组号

{

//中断处理内容

}

/**********************************************************************************************/

/*******************************[中断入口说明]************************************

interrupt 0 外部中断0(ROM入口地址:0x03)

interrupt 1 定时/计数器中断0(ROM入口地址:0x0B)

interrupt 2 外部中断1(ROM入口地址:0x13)

interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)

interrupt 4 UART串口中断(ROM入口地址:0x23)

(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)

using 0 使用寄存器组0

using 1 使用寄存器组1

using 2 使用寄存器组2

using 3 使用寄存器组3

using 寄存器号 ====可以不写,不写则用第0组

***********************************************************************************/

5. 如何边写windows服务程序

这两天想学习关于如何编写windows服务程序的知识,就上网查了些资料。

看了一篇文章《用C 语言编写Windows 服务程序的五个步骤》。但可能由于译者的疏忽,忘记了将关键代码放入该文档,导致初学者可能会看不懂。

所以又查阅了相关资料。自己完成了《用C 语言编写Windows 服务程序的五个步骤》中的样例程序。

在本文中我希望能给初学者一些帮助,大致讲一下编写windows服务程序需要的知识。 首先Microsoft Windows 服务(即,以前的NT 服务)使您能够创建在它们自己的Windows 会话中可长时间运行的可执行应用程序。

这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。 服务是有状态的,当我们使用windows自带的服务管理程序sc.exe查看服务状态时可以显示服务的当前状态,这个状态是由我们在程序代码中进行控制的。

你最好在服务初始化的时候将服务设置为SERVICE_START_PENDING,当初始化完毕时设为SERVICE_RUNNING,这些状态是系统自定义的状态,可通过msdn查看其他状态。这个状态信息你会在sc.exe中看到。

在编写windows服务程序过程中你需要关注的函数有: 1.首先是main函数,由于windows服务不需要界面,所以大部分程序为win32控制台应用程序,所以程序主函数为main 而不是WinMain()。在主函数要做的主要工作就是初始化一个SERVICE_TABLE_ENTRY 分派表结构体,然后调用StartServiceCtrlDispatcher();这将把调用进程的主线程转换为控制分派器。

该分派器启动一个新线程,该线程运行分派表中对应于你的服务的ServiceMain()函数。ServiceMain()函数将在下面提到。

此过程示例代码如下: SERVICE_TABLE_ENTRY entrytable[2]; entrytable[0].lpServiceName="testservice"; entrytable[0].lpServiceProc=(LPSERVICE_MAIN_FUNCTION)ServiceMain; entrytable[1].lpServiceName=NULL; entrytable[1].lpServiceProc=NULL; StartServiceCtrlDispatcher(entrytable); 在这之后系统将自动创建一个线程去执行ServiceMain函数的内容,你应该将你要执行的任务在ServiceMain中循环,这样服务就开始运行了。 2.ServiceMain函数为void WINAPI ServiceMain(int argc, char** argv)格式的函数,函数名字可以任意定义。

它的作用就是:将你需要执行的任务放到该函数中循环执行即可。这就是服务程序的工作函数。

在ServiceMain执行你的任务前,需要给SERVICE_TABLE_ENTRY 分派表结构体进行赋值,注意由于此时服务还没有开始执行你的任务所以我们将服务的状态设置为SERVICE_START_PENDING,即正在初始化。我们进行如下赋值: servicestatus.dwServiceType = SERVICE_WIN32; servicestatus.dwCurrentState = SERVICE_START_PENDING; servicestatus.dwControlsAccepted=SERVICE_ACCEPT_SHUTDOWN|SERVICE_ACCEPT_STOP; //在本例中只接受系统关机和停止服务两种控制命令 servicestatus.dwWin32ExitCode = 0; servicestatus.dwServiceSpecificExitCode = 0; servicestatus.dwCheckPoint = 0; servicestatus.dwWaitHint = 0; hstatus = ::RegisterServiceCtrlHandler("testservice", CtrlHandler); CtrlHandler为void WINAPI CtrlHandler(DWORD request)型的函数,函数名字可以任意设定。

将在下一点讲到。 Hstatus为SERVICE_STATUS_HANDLE类型的全局变量。

当需要改变服务状态时SetServiceStatus()函数需要它做为参数来标识一个服务。 3. void WINAPI CtrlHandler(DWORD request),函数的主要功能是,接收系统传递的控制命令,比如当你通过sc.exe关闭服务时,该函数会收到SERVICE_CONTROL_STOP消息,你就可以对服务进行必要的管理。

在本例子程序中就只接收SERVICE_ACCEPT_SHUTDOWN和SERVICE_ACCEPT_STOP消息,这是通过前面给servicestatus赋值设定的。 这样一个基本的服务程序就完成了。

下面贴出我的示例代码仅供参考。该代码在vs2008中调试通过。

本文结束的时候会附上如何安装服务。 #include #include #define SLEEP_TIME 5000 //间隔时间 #define FILE_PATH "C:\\log.txt" //信息输出文件 bool brun=false; SERVICE_STATUS servicestatus; SERVICE_STATUS_HANDLE hstatus; int WriteToLog(char* str); void WINAPI ServiceMain(int argc, char** argv); void WINAPI CtrlHandler(DWORD request); int InitService(); int WriteToLog(char* str) { FILE* pfile; fopen_s(&pfile,FILE_PATH,"a+"); if (pfile==NULL) { return -1; } fprintf_s(pfile,"%s\n",str); fclose(pfile); return 0; } void WINAPI ServiceMain(int argc, char** argv) { servicestatus.dwServiceType = SERVICE_WIN32; servicestatus.dwCurrentState = SERVICE_START_PENDING; servicestatus。

6. 用C#写了一个控制台程序,如何让它作为服务来运行

要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。

Instsrv.exe可以给系统安装和删除服务,Srvany.exe可以让程序以服务的方式运行。这两个软件都包含在Windows NT Resource Kit里。

把这两个程序保存在一个方便的位置,例如C盘根目录下。

我们举例来说明,把OE作为一个服务添加进Windows XP Professional操作系统中,并把这个服务命名为“Mail”。

在运行中输入“CMD”,回车,打开命令行窗口,在提示符后面直接输入:“c:\instsrv.exe Mail c:\srvany.exe”然后回车,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示这两个程序保存的位置,而Mail则是你想添加的服务名称。

运行Regedit打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到刚才添加的Mail,点击右键,新建一个键,命名为“Parameters”,点击新建的Parameters,并再次新建一个名称为“Application”的子键,数据类型为“REG_SZ”,数值为希望作为服务运行的程序的所在位置,如果你的Windows系统安装在C盘下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把这个路径添入数值中。

到现在,这个服务已经成功的添加并且设置好了。如果你希望做的更加专业,可以在Mail服务下建立一个名为Description的子键,数据类型同样为REG_SZ,数值可以写一些你对这个服务的描述,这个我们在后面可以看到。

接下来需要对服务做一些额外的设置,在运行中输入“Services.msc”并回车,在列表中找到我们刚添加的Mail服务,双击打开,来做详细的设置。

在“General”选项卡上,我们需要设置这个服务的运行方式,可以看见,作为一个服务,有“自动(Automatic)”,“手动(Manual)”和“禁止(Disabled)”三种启动类型,按照需要,我们一般设置成自动就可以了。而在“Logon”选项卡下可以设置以什么身份运行这个服务,一般可以不用理会,按照默认的设置。“Recovery”选项卡下则是进行恢复设置的,你可以指定,在服务第一次,第二次和第三次出错之后分别采取什么措施。“Dependencies”则显示了服务之间的依存关系,可以让你察看这个服务的运行依赖哪些其它服务,以及还有什么服务依赖于这个服务。这后面几个对我们一般用户没有什么意义。经过这些设置,你的服务已经完全可以正常工作了。

注销一下看看。为了让你看清除,我们先打开OE,这时在任务管理器里,有两个msimn进程,用户名为“.com.cn”的是我们打开的OE,而用户名为“SYSTEM”的就是我们添加的服务。

如果你玩够了,不想再运行这个服务,可以直接禁止它在启动的时候运行,或者使用Instsrv.exe程序删除。方法是在命令行下输入“c:\instsrv.exe Mail remove”,然后回车就可以了。需要注意的是Instsrv.exe这个程序也可以删除某些系统服务,所以使用的时候一定要小心,对于系统服务,安全起见千万不要删除,哪怕你觉得它对你没有用。

7. C++写的服务程序,如何获得当前执行程序所在目录

char szPathTemp[512];

GetModuleFileName(NULL, szPathTemp, 512);

//取出文件路径

for (int i=strlen(szPathTemp); i>=0; i--)

{

if (szPathTemp[i] == '\\')

{

szPathTemp[i] = '\0';

break;

}

}

这样试试,我用没问题

转载请注明出处育才学习网 » c怎么写服务

知识

毛笔字石怎么写

阅读(217)

本文主要为您介绍毛笔字石怎么写,内容包括毛笔字怎么写,石字硬笔书法怎么写好看,“石”字的写法,字体越多越好,书法也要,麻烦了,谢谢百度。初学毛笔字写法一学写毛笔字之前,首先得准备必备工具,那就是古人称之为“文房四宝”的笔、墨、纸、砚

知识

开学啦的作文怎么写

阅读(200)

本文主要为您介绍开学啦的作文怎么写,内容包括开学了的作文怎么写,开学了作文300字,开学的作文怎么写。开学感想寒假终于都过去了,紧接着就是读书了.六年纪,已经是毕业班了,我不敢疏忽,心想着努力读书,不过好像做不到. 新的学期,新的“景象”

知识

最好单词怎么写

阅读(191)

本文主要为您介绍最好单词怎么写,内容包括(最好)的英语单词怎么写,(最好)的英语单词怎么写,疼爱的英文怎么写最好写明白点```。写好字母是基础。万事开头难,好的开始是成功的一半。以往的经验告诉我,英语书写不好的学生,绝大部分是字母的书写不规

知识

疲倦的的英文怎么写

阅读(555)

本文主要为您介绍疲倦的的英文怎么写,内容包括疲倦的单词怎么写,累的,疲倦的用英文怎么说呢和tired有关但不是这个词,疲倦用英语怎样写。很累英文:very tiredNow sit down and make yourself comfortable. You must

知识

活动的备注怎么写

阅读(227)

本文主要为您介绍活动的备注怎么写,内容包括关于“篮球比赛”的活动流程和备注怎么写,大学生社会实践活动的活动登记表最后的备注应写些什么,社会实践活动总结表中的备注是什么意思。一, 要先考虑组织篮球比赛的可行性。是否适合在这个时间

知识

文献标题怎么写

阅读(213)

本文主要为您介绍文献标题怎么写,内容包括论文标题格式,写论文中大标题,一级标题,二级标题分别指什么啊,英文论文里引用了中文参考文献,但是中文文献没有英文标题,该怎。论文格式 当我们对一个问题研究之后,如何将其展现于众人面前是一个重

知识

教学单词怎么写

阅读(156)

本文主要为您介绍教学单词怎么写,内容包括老师英语单词怎么写,教室单词怎么写,学习的英语单词怎么写。study英 [stʌdɪ] 美 [stʌdi] n. 学习,研究;课题;书房;学问vt. 学习;考虑;攻读;细察vi. 研究;用功n.

知识

贴息申请怎么写

阅读(271)

本文主要为您介绍贴息申请怎么写,内容包括贷款贴息申请书怎么写,贷款贴息申请书怎么写,流动资金贷款贴息申请报告怎么写。贷 款 申 请**银行:本公司是贵社的忠实客户,也是贵社的重点扶持对象,长年来信用良好。多年来一直从事**加工,经营业绩良

知识

考研调剂申请怎么写

阅读(165)

本文主要为您介绍考研调剂申请怎么写,内容包括考研调剂申请书怎么写,最好有模板的,考研调剂书面申请怎么写,如何写好2017考研调剂申请邮件。如果有表格的话就填表呗,没有表格的话你可你这么说:老师,您好! 我是XXX(性别),本科就读于XXX,今年(如果是应

知识

动物儿歌怎么仿写

阅读(317)

本文主要为您介绍动物儿歌怎么仿写,内容包括仿写动物儿歌六句的话,一年级语文下册动物儿歌看图写作文如何写,动物儿歌仿写海豚怎样写它的欢快。要下雨了,远处的高山连绵不断,树木高大苍劲,燕子哥哥对燕子妹妹说:“妹妹,我们这样飞太累了,我们还是

知识

公司百科怎么写

阅读(167)

本文主要为您介绍公司百科怎么写,内容包括公司百度百科怎么写,公司百度百科怎么写,怎么写公司简介。选择高级的百度账号进行创建百度账号的级别从一定程度上代表了账号的权威性,对于百度后台来说级别高级的账号可以算是相对来说较为优质的账

知识

职业资格怎么写

阅读(2771)

本文主要为您介绍职业资格怎么写,内容包括职业资格怎么填,专业技术资格和执业资格如何填写,执业资格怎么填。事业单位招聘属于入职招聘,其中包括公立学校入编教师的招聘。报名表中的职称和执业资格栏目,考生有这项可填百写,没有就无需填写。1.

知识

结婚满月请帖怎么写

阅读(179)

本文主要为您介绍结婚满月请帖怎么写,内容包括结婚满月一起办如何写请柬,满月酒结婚酒怎么写请柬,满月请帖怎么填。一般的满月酒宴请帖格式是这样的:送呈 ***先生(女士) 台启谨定于公历****年*月*日(星期*)农历****年*月*日上午(下午)*

知识

日语的是的怎么写

阅读(173)

本文主要为您介绍日语的是的怎么写,内容包括日语“是的”怎么说,日语是的到底怎么写,日语是的到底怎么写。是的,是呀,是啊 正式一点就はい、口语一点就ええ 好的 よし好 いいですよ可以 よかった太好了 都是比较口语的对不起 ごめん普通朋友

知识

怎么写招聘服务员信息

阅读(243)

本文主要为您介绍怎么写招聘服务员信息,内容包括餐厅招聘服务员信息怎么写,招聘餐厅服务员怎么写:具体怎么写才好点,怎样写招聘餐馆服务员的信息。餐厅招聘服务员信息的书写范文:本饭店因为业务需要,现招聘XX名员工(或者写上职位),具体的要求如下

知识

服务员目标怎么写

阅读(232)

本文主要为您介绍服务员目标怎么写,内容包括饭店服务员的工作目标怎么写,请问服务员工作目标怎么写,餐厅服务员的学习目标该怎么写。一般情况下,服务员这个层级员工在常规性工作中的工作目标是管理者定的,而不是由员工个人定的。这也就是常说

知识

dns服务器怎么写

阅读(173)

本文主要为您介绍dns服务器怎么写,内容包括请问DNS服务器地址怎么填,首选DNS服务器填什么,自家电脑怎么填首选DNS和备用DNS服务器啊。简单办法查询DNS服务器的域名及IP地址 进入DOS,输入nslookup, >nslookup > set querytype=ns

知识

怎么写服务程序

阅读(185)

本文主要为您介绍怎么写服务程序,内容包括求救:如何写服务程序,怎么把一个程序写入服务,如何编写windows服务程序。要把应用程序添加为服务,你需要两个小软件:Instsrv.exe和Srvany.exe。Instsrv.exe可以给系统安装和删除服务,

知识

服务描述怎么写

阅读(197)

本文主要为您介绍服务描述怎么写,内容包括服务产品简介如何写,餐厅服务员工作描述怎样写,职责描述怎么写。给你个例子,比如说是某个电子产品的服务产品简介,就是三年保修服务 产品编号:SP-HS-01(略)保外维修服务 产品编号:SP-HS-0

知识

服务员职信怎么写

阅读(167)

本文主要为您介绍服务员职信怎么写,内容包括作为餐厅服务员,怎样写辞职信,餐厅服务员辞职信怎么写,服务员转正申请怎么写。这个问题……提问者并没有说明是什么样的餐厅…… 如果是星巴克? 必胜客? 还是街边的私人 菜馆……或者高级西餐厅? 相

知识

推荐服务之星怎么写

阅读(264)

本文主要为您介绍推荐服务之星怎么写,内容包括保洁服务之星范文推荐书怎样写,作文推荐服务之星怎么写(100字),商场服务之星推荐自己该怎样写。尊敬的各位领导:大家好!今天我演讲的题目是《爱岗敬业 奉献青春》。当您踏着清晨的曙光,行走在州城那

知识

招服务员信息怎么写

阅读(182)

本文主要为您介绍招服务员信息怎么写,内容包括餐厅招聘服务员信息怎么写,招聘餐厅服务员怎么写:具体怎么写才好点,餐厅招聘服务员的信息怎么写。餐厅招聘服务员信息的书写范文:本饭店因为业务需要,现招聘XX名员工(或者写上职位),具体的要求如下:气

[/e:loop]