关于windows 问题

hengase 2009-04-07 02:56:01
用vs2005 如何做一个windows 服务程序,并注册。最好有详细步骤。
...全文
183 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hityct1 2009-04-08
  • 打赏
  • 举报
回复
可以看《WINDOWS系统编程 》第13章。下载有电子书,自己找。
http://search.download.csdn.net/search/windows%E7%B3%BB%E7%BB%9F%E7%BC%96%E7%A8%8B
hylove9494 2009-04-08
  • 打赏
  • 举报
回复
sf
xbwee 2009-04-08
  • 打赏
  • 举报
回复
开发服务程序或是COM,使用 ATL 吧, 自动完成了自注册函数等等大部分功能。选择 C++ 下 ATL 服务程序项目(exe)
hoomien 2009-04-08
  • 打赏
  • 举报
回复
问题能描述的详细些吗?
野男孩 2009-04-08
  • 打赏
  • 举报
回复
贴一个转载,vckbase上找到的,有源代码下载:
http://www.vckbase.com/document/viewdoc/?id=1474

前面部分内容如下:

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

原文:Yevgeny Menaker
翻译:Northtibet

下载源代码
原文出处:Five Steps to Writing Windows Services in C


摘要

  Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。
  当初我写第一个 NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C++”,这篇文章附带一个 C++ 例子。虽然这篇文章很好地解释了服务的开发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,以及何时调用,但 C++ 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,它不利于学习服务程序的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程序或者实现简单后台任务的服务。在你对服务程序有了充分透彻的理解之后,用 C++ 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就非常容易解释 NT 服务之所以然。
  服务是一个运行在后台并实现勿需用户交互的任务的控制台程序。Windows NT/2000/XP 操作系统提供为服务程序提供专门的支持。人们可以用服务控制面板来配置安装好的服务程序,也就是 Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入 services.msc /s——译者注)。可以将服务配置成操作系统启动时自动启动,这样你就不必每次再重启系统后还要手动启动服务。
  本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文件的服务。然后指导你完成生成,安装和实现服务的整个过程。


第一步:主函数和全局定义

首先,包含所需的头文件。例子要调用 Win32 函数(windows.h)和磁盘文件写入(stdio.h):

#include <windows.h>
#include <stdio.h>
接着,定义两个常量:

#define SLEEP_TIME 5000
#define LOGFILE "C:\\MyServices\\memstatus.txt"
SLEEP_TIME 指定两次连续查询可用内存之间的毫秒间隔。在第二步中编写服务工作循环的时候要使用该常量。
LOGFILE 定义日志文件的路径,你将会用 WriteToLog 函数将内存查询的结果输出到该文件,WriteToLog 函数定义如下:

int WriteToLog(char* str)
{
FILE* log;
log = fopen(LOGFILE, "a+");
if (log == NULL)
return -1;
fprintf(log, "%s\n", str);
fclose(log);
return 0;
}
声明几个全局变量,以便在程序的多个函数之间共享它们值。此外,做一个函数的前向定义:

SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

void ServiceMain(int argc, char** argv);
void ControlHandler(DWORD request);
int InitService();
  现在,准备工作已经就绪,你可以开始编码了。服务程序控制台程序的一个子集。因此,开始你可以定义一个 main 函数,它是程序的入口点。对于服务程序来说,main 的代码令人惊讶地简短,因为它只创建分派表并启动控制分派机。

void main()
{
SERVICE_TABLE_ENTRY ServiceTable[2];
ServiceTable[0].lpServiceName = "MemoryStatus";
ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;

ServiceTable[1].lpServiceName = NULL;
ServiceTable[1].lpServiceProc = NULL;

// 启动服务的控制分派机线程
StartServiceCtrlDispatcher(ServiceTable);
}
  一个程序可能包含若干个服务。每一个服务都必须列于专门的分派表中(为此该程序定义了一个 ServiceTable 结构数组)。这个表中的每一项都要在 SERVICE_TABLE_ENTRY 结构之中。它有两个域:

lpServiceName: 指向表示服务名称字符串的指针;当定义了多个服务时,那么这个域必须指定;
lpServiceProc: 指向服务主函数的指针(服务入口点);


Proteas 2009-04-07
  • 打赏
  • 举报
回复
是服务程序吧。google下,资料很多。
fairchild811 2009-04-07
  • 打赏
  • 举报
回复
楼主稍微详细一点,类似于什么?
nodiebirdcomeback 2009-04-07
  • 打赏
  • 举报
回复
这是一种后台运行的程序,
有一套自己的编程规范的,
按照它的编程规范编写的程序
在注册一下就可以了。
这个可以在网上找些资料来看!
cyldf 2009-04-07
  • 打赏
  • 举报
回复
没做过,友情帮顶~~~
zbing0203 2009-04-07
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1474
Windows 服务程序
mengde007 2009-04-07
  • 打赏
  • 举报
回复
难为楼主了……
aaaa3105563 2009-04-07
  • 打赏
  • 举报
回复
win32 项目
还没淹死的鱼 2009-04-07
  • 打赏
  • 举报
回复
windows 服务程序?

不懂

不知领导懂不懂, 也要求我做, 推掉了
cancer001 2009-04-07
  • 打赏
  • 举报
回复
这种帖子还是??…………※
割了吧,都烧焦了^_^
tsoslience 2009-04-07
  • 打赏
  • 举报
回复
不理解....
ryfdizuo 2009-04-07
  • 打赏
  • 举报
回复
这种帖子。。。
  • 打赏
  • 举报
回复
windows 服务程序??是什么?
socket服务器?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧