编程打开Windows服务控制管理器
假设要自己编程来加载Windows下后缀为.sys的驱动程序;首先要使用 OpenSCManager 函数打开Windows服务控制管理器;
下面先来调用此函数看一下会不会打开成功;代码如下;
#include <windows.h>
#include <winsvc.h>
#include <conio.h>
#include <stdio.h> #define DRIVER_NAME "HelloDriver"
#define DRIVER_PATH "..//MyDriver//HelloDriver.sys" int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{/* TODO: Place code here.*/PVOID lpMsgBuf; char szBuffer[100];char szDriverImagePath[256]; //得到完整的驱动路径 //GetFullPathName(lpszDriverPath, 256, szDriverImagePath, NULL); BOOL bRet = FALSE; SC_HANDLE hServiceMgr=NULL;//SCM管理器的句柄 SC_HANDLE hServiceDDK=NULL;//NT驱动程序的服务句柄 //打开服务控制管理器 //hServiceMgr = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS ); hServiceMgr = OpenSCManager( NULL, "abc", SC_MANAGER_ALL_ACCESS); if( hServiceMgr == NULL ) { //OpenSCManager失败 if (FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER |FORMAT_MESSAGE_FROM_SYSTEM |FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(), // 错误代码MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf,0,NULL)){MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("打开服务控制管理器失败"), MB_OK);}} else { wsprintf(szBuffer, "0x%08x",hServiceMgr);MessageBox(NULL,szBuffer,TEXT("开服务控制管理器,句柄:"),0);} LocalFree(lpMsgBuf); return 0;
}
打开成功,则显示打开的句柄;打开失败,显示格式化错误消息;使用Dev C++;
打开成功如下;
OpenSCManager 函数描述如下;
SC_HANDLE WINAPI OpenSCManager(
_In_opt_ LPCTSTR lpMachineName,
_In_opt_ LPCTSTR lpDatabaseName,
_In_ DWORD dwDesiredAccess
);
函数作用:以一定的权限,在指定的计算机打开指定的SCM数据库;
参数:
1. lpMachineName:目标计算机名,NULL表示本地计算机
2. lpDatabaseName:服务管理程序系统组件数据库,可以设为SERVICES_ACTIVE_DATABASE,如果为NULL,表示默认打开SERVICES_ACTIVE_DATABASE数据库
3. dwDesiredAccess:对SCM的权限,可以是以下:
Access right Description
SC_MANAGER_ALL_ACCESS (0xF003F) Includes STANDARD_RIGHTS_REQUIRED, in addition to all access rights in this table.
SC_MANAGER_CREATE_SERVICE (0x0002) Required to call the CreateService function to create a service object and add it to the database.
SC_MANAGER_CONNECT (0x0001) Required to connect to the service control manager.
SC_MANAGER_ENUMERATE_SERVICE (0x0004) SC_MANAGER_LOCK (0x0008) Required to call the LockServiceDatabase function to acquire a lock on the database.
SC_MANAGER_MODIFY_BOOT_CONFIG (0x0020) Required to call the NotifyBootConfigStatus function.
SC_MANAGER_QUERY_LOCK_STATUS (0x0010) Required to call the QueryServiceLockStatus function to retrieve the lock status information for the database.
第二个参数是数据库名;如果随便给个"abc",则打开失败如下;
编程打开Windows服务控制管理器相关推荐
- Windows下的服务控制管理器(SCM)
一.概要 服务管理器是用于管理系统服务的管理工具.一般常用于windows系统,使用这个工具你可以启动.停止服务:设置服务是自动.手动启动或禁用:查看某个服务的相关信息:设置服务以什么用户启动等等(一 ...
- 《Windows核心编程》---Windows服务
Windows服务(Services),是一些运行在WindowsNT.Windows2000和Windows XP等操作系统下用户环境以外的程序.它不同于一般的可执行程序,不需要系统登录便可以运行, ...
- Windows 程序包管理器 1.0 正式发布
在 Microsoft Build 2021 开发者大会上,微软正式发布 Windows Package Manager(程序包管理器)1.0 正式版,目前在 GitHub 上已有超过 1600 个程 ...
- win7信息服务器iis管理器,win7系统打开Internet信息服务(IIS)管理器的操作方法
很多小伙伴都遇到过对win7系统打开Internet信息服务(IIS)管理器进行设置的困惑吧,一些朋友看过网上对win7系统打开Internet信息服务(IIS)管理器设置的零散处理方法,并没有完完全 ...
- 信息服务器在哪里打开,信息服务,详细教您哪里打开Internet信息服务(IIS)管理器...
小可爱们,你们的回眸就是小编我写文的"鸡血",现在的小编我不但满血复活.而且是满腔热情!所以我今天就继续努力来吸引你们的目光,来,接下来小编带你们一起来看看在哪里打开Interne ...
- Win2008 r2 远程桌面服务授权管理器激活方法
Windows 2008在不安装远程桌面服务授权管理器下的情况,系统允许有120天的宽限期,在120天后,又不想购买授权的话,就需要按以下的步骤"折腾"一下了: 1.首先进入&qu ...
- 添加游戏对象到 Windows 7 游戏管理器中。
在 Windows 7 中点击开始,再点击游戏,就可打开系统游戏管理器了:在里面添加其他游戏也很方便,只需要把游戏快捷方式或游戏执行程序拖进去就可了. 出于对拖游戏执行程序后,显示名称的修改就在系统中 ...
- windows 安装包管理器scoop
windows 包管理器scoop的使用 一.安装前准备 用户名不能含有空格中文等特殊字符,最好纯英文 PowerShell 3+ .Net Framework 4.5+ 如何可以的话扶墙,如果没有能 ...
- 在windows下IIS管理器,网站报401.2错误解决办法
401.2错误是指没有身份验证头无效.网站遇到这个问题,后来上网查了下解决方法,解决了,但自己还是要记录下. 解决步骤就是: 进入IIS管理器,找到出问题的那个网站,然后找到它的身份验证,将匿名身份验 ...
最新文章
- 模拟退火求函数最值问题求解
- Intellij IDEA 提交代码到远程GitHub仓库
- [技术基础]计算机网络技术基础名词解释
- mq同步mysql数据 duplicate entry_MySQL数据同步之otter
- linux之Vim用快捷键快速移动光标至行首和行尾
- 幸运三角形 南阳acm491(dfs)
- 对HashMap数据结构的理解——加载因子和初始容量
- Ackermann函数的递归求值
- 多线程的那点事儿(之数据互斥)
- 给安利公司董事长郑李锦芬女士的一封信
- oracle查看所有用户6,oracle 查看 用户 用户权限 用户表空间 用户默认表空间
- 帧起始定界符_帧详解 - web黄金矿工 - 博客园
- python中函数 reshape(-1,1)
- argparse模块用法
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_08-CMS需求分析-CMS页面管理需求...
- 电脑如何恢复声音_电脑不小心丢失照片如何恢复如初
- windows server 2003 桌面图标有蓝底如何解决
- STM32HAL----USB升级固件(DFU)
- String spilt()方法
- layui自定义新增tab页方法