C# 驱动卸载 / UniSysDriver
如果你需要了解驱动如何加载,那么可以参考我的这篇
文章C# 驱动加载 / LoadSysDriver总体两者的方法差异
不大
public static bool UniSysDriver(string strServiceName){IntPtr hSCManager = OpenSCManager(null, null, SC_MANAGER_CREATE_SERVICE);if (hSCManager == NULL){return false;}IntPtr hService = OpenService(hSCManager, strServiceName, SERVICE_DELETE | SERVICE_STOP);if (hService == NULL){return !CloseServiceHandle(hSCManager);}SERVICE_STATUS SERVICE_STATUS = new SERVICE_STATUS();if (!ControlService(hService, SERVICE_CONTROL_STOP, ref SERVICE_STATUS)){DeleteService(hService);}return CloseServiceHandle(hService) && CloseServiceHandle(hSCManager);}
先打开SCM服务管理器,打开服务但是需要在标志段说明
SERVICE_DELETE | SERVICE_STOP 删除服务与停止服
务两个访问操作权限、在通过ControlService 控制服务、
通过SERVICE_CONTROL_STOP说明当前需要控制停止服
务、在删除服务,这里是删除内核服务也就是驱动、在做最
后资源清理的操作、整个流程便完结了、
示例代码:
DriverService.UniSysDriver("dxtest");
外部函数:
ControlService( 控制服务
hService 服务句柄
dwControl 控制方式
lpServiceStatus 服务状态)
依赖声明:
private const int SC_MANAGER_CREATE_SERVICE = 2;private const int SERVICE_STOP = 32;private const int SERVICE_CONTROL_STOP = 1;private const int SERVICE_DELETE = 65536;private static readonly IntPtr NULL = IntPtr.Zero;[DllImport("advapi32.dll", CharSet = CharSet.Unicode, SetLastError = true)]public static extern IntPtr OpenSCManager(string machineName, string databaseName, uint dwAccess);[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Auto)]private static extern IntPtr OpenService(IntPtr hSCManager, string lpServiceName, uint dwDesiredAccess);[DllImport("advapi32.dll", SetLastError = true)][return: MarshalAs(UnmanagedType.Bool)]private static extern bool CloseServiceHandle(IntPtr hSCManager);[DllImport("advapi32.dll", SetLastError = true)][return: MarshalAs(UnmanagedType.Bool)]private static extern bool ControlService(IntPtr hService, int dwControl, ref SERVICE_STATUS lpServiceStatus);[DllImport("advapi32.dll", SetLastError = true)][return: MarshalAs(UnmanagedType.Bool)]private static extern bool DeleteService(IntPtr hService);[StructLayout(LayoutKind.Sequential)]private struct SERVICE_STATUS{public int dwServiceType;public int dwCurrentState;public int dwControlsAccepted;public int dwWin32ExitCode;public int dwServiceSpecificExitCode;public int dwCheckPoint;public int dwWaitHint;}
C# 驱动卸载 / UniSysDriver相关推荐
- 卸载 系统打印服务器,win10系统打印机驱动卸载不掉的方案介绍
win10系统使用久了,好多网友反馈说win10系统打印机驱动卸载不掉的问题,非常不方便.有什么办法可以永久解决win10系统打印机驱动卸载不掉的问题,面对win10系统打印机驱动卸载不掉的图文步骤非 ...
- linux显卡驱动卸载和安装,Linux下Nvidia显卡驱动卸载和卸载后的问题
Linux下Nvidia显卡驱动卸载和卸载后的问题 由于在Ubuntu下安装了Nvidia显卡驱动后开机一直处于循环登录界面,密码输入正确也是进不去,然后就决定卸载Nvidia显卡驱动. 首先是在能使 ...
- Ubuntu16.04 NVIDIA显卡驱动卸载与安装
Ubuntu16.04 NVIDIA显卡驱动卸载与安装 1.NVIDIA显卡驱动下载 2.NVIDIA显卡驱动卸载 3.NVIDIA显卡驱动安装 3.1.在线安装 3.2.离线安装 1.NVIDIA显 ...
- Nvidia驱动卸载干净了,新驱动却还是安装不上?
(卸载干净后,驱动还是安装不上) 由于更新到 cuda11.1(驱动版本455.23)之后服务器分布式训练出现多个0MB进程,类似下图 准备卸载后重装,按照上述经历,卸载了驱动和cuda,为了偷懒想重 ...
- 服务器有必要更新主板芯片组吗,芯片组驱动要不要更新_芯片组驱动卸载了会怎么样...
本文首先介绍了芯片组驱动的重要性,其次介绍了芯片组驱动卸载带来的后果,最后阐述了芯片组驱动要不要更新以及更新的步骤教程,具体的跟随小编一起来了解一下. 芯片组驱动的重要性 芯片组是构成主板电路的核心. ...
- win10DCH驱动卸载后无法安装标准驱动的问题(与首选图形处理器拒绝访问)
最近我在安装OBS的时候发现OBS录频显示黑屏,于是我开始在网上查找解决方案,有许多帖子讲解说要在NVIDIA控制面板中更改OBS的首选图形处理器,但是当我打开控制面板后更改OBS时发现提示拒绝访问, ...
- Razer雷蛇7.1声音驱动卸载后无法安装问题
前一阵子因为声音驱动问题卸载了雷蛇的驱动后,怎么安装都不会出现下图的7.1 Surround Sound声道 摸索了一阵子,发现是驱动没有卸载干净的问题. 解决: 先下载下面链接中的驱动卸载工具. 链 ...
- linux系统英伟达gpu驱动卸载_Ubuntu 16.04 卸载Nvidia显卡驱动和cuda
tensorflow不断升级,最新版本的代码需要更高版本的cuda支持.以前一直用cuda8.0和cudnn6.0的组合,tensorflow用1.3.0版本.不过最新下载的models,某些代码执行 ...
- linux系统英伟达gpu驱动卸载_ubuntu16.04循环登陆与NVIDIA显卡驱动的卸载/安装
最近购置了一台自己组装的新台式机,在上面安装了ubuntu和windows双系统,准备在ubuntu上运行CARLA.Ubuntu系统在我刚刚安装好的时候出了挺多问题的,没有网卡驱动,没有显卡驱动.都 ...
最新文章
- Python中修改字符串的四种方法
- 教学计划c语言源代码,c语言教学计划.doc
- 哈尔滨工业大学计算机培养计划,哈工大计算机科学与技术专业本科生培养方案.docx...
- 参考文献_参考文献:
- 『设计模式』之小试牛刀
- java并发AtomicIntegerArray
- mac docker mysql_Mac操作系统上使用Docker创建MySQL主从数据库
- 自己敲的low到爆炸的代码
- Linux操作系统中readelf命令常见用法
- 电子游戏发展史话——《doom启示录》读后感(三)
- 甘特图:有效的项目管理计划怎么制定?
- Python创建网站
- 洛可可田浩:情感设计让产品开口说话
- python ssologin_Python sso
- R语言编程的高效方法
- C#线程实现暂停与继续
- MHT: Basic Methods for Data Association(三)Gating
- 黄淮学院计算机重点学科,黄淮学院专业排名 最好的专业有哪些
- 新小米手机--首次使用
- 高铁、动车到底啥区别?看完彻底懂了(组图)
热门文章
- 南开大学计算机技术考研辅导,南开大学计算机技术考研
- 部分用户访问Polycom视频会议时故障
- gdb入门教程大全(清晰明了)
- 美通企业日报 | 杭州打造全球一流生物医药创新城;雅高与阿里巴巴战略合作...
- oracle clog读取 php,Spring+Hibernate中处理Oracle的BLOG和CLOG字段
- 睿智的目标检测56——Pytorch搭建YoloV5目标检测平台
- PMP认证-项目管理认证好处及优势
- 金山中等专业学校计算机,江苏省金山中等专业学校2021年招生简章
- 支付宝支付-电脑网站支付
- C++基础学习-26继承的构造函数、多重继承、虚继承