假设要自己编程来加载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服务控制管理器相关推荐

  1. Windows下的服务控制管理器(SCM)

    一.概要 服务管理器是用于管理系统服务的管理工具.一般常用于windows系统,使用这个工具你可以启动.停止服务:设置服务是自动.手动启动或禁用:查看某个服务的相关信息:设置服务以什么用户启动等等(一 ...

  2. 《Windows核心编程》---Windows服务

    Windows服务(Services),是一些运行在WindowsNT.Windows2000和Windows XP等操作系统下用户环境以外的程序.它不同于一般的可执行程序,不需要系统登录便可以运行, ...

  3. Windows 程序包管理器 1.0 正式发布

    在 Microsoft Build 2021 开发者大会上,微软正式发布 Windows Package Manager(程序包管理器)1.0 正式版,目前在 GitHub 上已有超过 1600 个程 ...

  4. win7信息服务器iis管理器,win7系统打开Internet信息服务(IIS)管理器的操作方法

    很多小伙伴都遇到过对win7系统打开Internet信息服务(IIS)管理器进行设置的困惑吧,一些朋友看过网上对win7系统打开Internet信息服务(IIS)管理器设置的零散处理方法,并没有完完全 ...

  5. 信息服务器在哪里打开,信息服务,详细教您哪里打开Internet信息服务(IIS)管理器...

    小可爱们,你们的回眸就是小编我写文的"鸡血",现在的小编我不但满血复活.而且是满腔热情!所以我今天就继续努力来吸引你们的目光,来,接下来小编带你们一起来看看在哪里打开Interne ...

  6. Win2008 r2 远程桌面服务授权管理器激活方法

    Windows 2008在不安装远程桌面服务授权管理器下的情况,系统允许有120天的宽限期,在120天后,又不想购买授权的话,就需要按以下的步骤"折腾"一下了: 1.首先进入&qu ...

  7. 添加游戏对象到 Windows 7 游戏管理器中。

    在 Windows 7 中点击开始,再点击游戏,就可打开系统游戏管理器了:在里面添加其他游戏也很方便,只需要把游戏快捷方式或游戏执行程序拖进去就可了. 出于对拖游戏执行程序后,显示名称的修改就在系统中 ...

  8. windows 安装包管理器scoop

    windows 包管理器scoop的使用 一.安装前准备 用户名不能含有空格中文等特殊字符,最好纯英文 PowerShell 3+ .Net Framework 4.5+ 如何可以的话扶墙,如果没有能 ...

  9. 在windows下IIS管理器,网站报401.2错误解决办法

    401.2错误是指没有身份验证头无效.网站遇到这个问题,后来上网查了下解决方法,解决了,但自己还是要记录下. 解决步骤就是: 进入IIS管理器,找到出问题的那个网站,然后找到它的身份验证,将匿名身份验 ...

最新文章

  1. 模拟退火求函数最值问题求解
  2. Intellij IDEA 提交代码到远程GitHub仓库
  3. [技术基础]计算机网络技术基础名词解释
  4. mq同步mysql数据 duplicate entry_MySQL数据同步之otter
  5. linux之Vim用快捷键快速移动光标至行首和行尾
  6. 幸运三角形 南阳acm491(dfs)
  7. 对HashMap数据结构的理解——加载因子和初始容量
  8. Ackermann函数的递归求值
  9. 多线程的那点事儿(之数据互斥)
  10. 给安利公司董事长郑李锦芬女士的一封信
  11. oracle查看所有用户6,oracle 查看 用户 用户权限 用户表空间 用户默认表空间
  12. 帧起始定界符_帧详解 - web黄金矿工 - 博客园
  13. python中函数 reshape(-1,1)
  14. argparse模块用法
  15. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_08-CMS需求分析-CMS页面管理需求...
  16. 电脑如何恢复声音_电脑不小心丢失照片如何恢复如初
  17. windows server 2003 桌面图标有蓝底如何解决
  18. STM32HAL----USB升级固件(DFU)
  19. String spilt()方法
  20. layui自定义新增tab页方法

热门文章

  1. 哭了,复现TensorFlow版本MAE的shuffle和reshuffle
  2. Windows系统笔记本禁用自带键盘
  3. 微服务架构编码,构建
  4. 转载:sqlmap的应用实战
  5. 跨域策略文件crossdomain.xml的配置方法
  6. tomcat部署项目
  7. 嵌入式Linux学习2——Linux常用指令2
  8. 【嵌入式干货】hex、bin转换、以及hex合成工具(基于Python)
  9. C++高斯赛德迭代法,求线性方程组的解(version1.0)
  10. IDEA设置虚拟机参数