windows服务程序编写笔记
需积分: 0 27 浏览量
更新于2013-10-29
收藏 20KB DOC 举报
### Windows服务程序编写知识点
#### 一、服务的基础知识
**1. 什么是服务?它的特征是什么?**
- **定义**: 服务是一种特殊的Win32应用程序,它可以在后台运行而无需用户界面。这类程序通常执行关键任务,如系统管理、硬件监控等。
- **特性**:
- **后台运行**: 服务不依赖于用户交互即可运行,这意味着它们可以在系统启动时自动启动并在系统关闭时自动关闭。
- **系统优待**: 服务通常具有较高的优先级,以便它们可以高效地执行关键任务。
- **远程管理**: 服务可以通过网络进行配置和管理,这使得管理员可以从远程位置控制服务。
#### 二、服务的安全性
**2. 服务的安全性**
- **上下文**: 当一个进程被创建时,它将在特定用户的上下文中运行。这意味着该进程将拥有该用户的所有权限。
- **权限管理**: 由于服务也是一个Win32应用程序,因此它也需要在一个用户的上下文中运行。为了确保安全性,通常服务会使用专用账户或限制性更强的账户来运行。
- **安全性考量**: 开发者在设计服务时需要考虑如何最小化服务所需的权限,以减少潜在的安全风险。
#### 三、服务的三个组成部分
**3. 服务的三个组成部分**
- **ServiceControlManager (SCM)**: SCM 是 Windows 系统中的核心组件,用于管理和控制服务。SCM 存在于 Service.exe 进程中,随着操作系统的启动和关闭而启动和关闭。
- **服务本身**: 服务包含特殊的代码,使其能够接收来自 SCM 的信号和命令,并向 SCM 报告其状态。
- **ServiceControl Dispatcher (SCP)**: SCP 是一个带有用户界面的应用程序,允许用户启动、停止、暂停和恢复服务。开发者可能需要编写自己的 SCP 应用来管理服务。
#### 四、服务的设计与实现
**4. 怎样开始设计服务**
- **入口点函数**:
- `main()` 或 `WinMain()` 函数是服务程序的起点,负责初始化整个进程。
- **ServiceMain**:
- 此函数由操作系统调用,是服务的主要入口点。
- 函数原型如下:
```c++
VOID WINAPI ServiceMain(
DWORD dwArgc, // 参数个数
LPTSTR *lpszArgv // 参数列表
);
```
- **CtrlHandler**:
- 这是一个必须存在的函数,用于响应来自 SCM 的控制命令。
- 函数原型如下:
```c++
VOID WINAPI CtrlHandler(
DWORD fdwControl // 控制命令
);
```
#### 五、服务的深入讨论
**5. 对服务的深入讨论之上**
- **初始化 SERVICE_TABLE_ENTRY 结构数组**:
- 在 ServiceMain 函数中,需要初始化一个 `SERVICE_TABLE_ENTRY` 数组,该数组包含了服务名称和服务主函数的映射关系。
- 示例代码如下:
```c++
SERVICE_TABLE_ENTRY service_table_entry[] = {
{ "MyFTPd", FtpdMain },
{ "MyHttpd", Httpserv },
{ NULL, NULL }
};
```
- 数组中的最后一个元素必须以 `{ NULL, NULL }` 结束。
- **调用 StartServiceCtrlDispatcher**:
- 使用 `StartServiceCtrlDispatcher` 函数启动服务。
- 函数原型如下:
```c++
BOOL StartServiceCtrlDispatcher(
LPSERVICE_TABLE_ENTRY lpServiceStartTable
);
```
- 此函数将遍历传入的 `SERVICE_TABLE_ENTRY` 数组,并为每个非空条目创建一个新线程,这些线程将执行相应的 `ServiceMain` 函数。
通过以上知识点的学习,开发者可以深入了解 Windows 服务的开发流程和技术细节,从而更好地设计和实现可靠的服务程序。
u012618899
- 粉丝: 0
- 资源: 2
最新资源
- 自动送餐设备sw16可编辑全套技术资料100%好用.zip
- 自动丝印链板线(sw19可编辑+工程图)全套技术资料100%好用.zip
- Meterpreter框架下常见命令及其应用详解
- 自行车立体车库 sw16全套技术资料100%好用.zip
- 自动贴胶带贴膜产线sw17可编辑全套技术资料100%好用.zip
- 多功能集成工具 SpiritTools 2.0.1 版本功能更新与优化
- 自动纸板捆扎机1.5米sw16可编辑全套技术资料100%好用.zip
- python脚本-生成MySQL数据字典
- enhanced chop melons and vegetables-啊哦111
- 字符串-圣诞树c++语言编程代码
- christmasTree-圣诞树html网页代码
- 数据结构与算法 -二叉树的深度
- shell-scripts-python圣诞树
- chdthesis-学术规范与论文写作
- Java-Interview-Advanced-啊哦111
- iot-iita-http