开启服务并设置服务启动方式

9.9元ESP32-C3开发板实战:手把手教你用VSCode搭建RT-Thread最小系统(附避坑指南) 本文提供了一份详尽的实战指南,教你如何在售价仅9.9元的ESP32-C3开发板上,使用VSCode搭建RT-Thread最小系统。内容涵盖从ESP-IDF环境配置、BSP源码获取、内核补丁应用到编译下载与调试的全流程,并重点分享了版本选择、补丁应用等关键避坑技巧,旨在帮助开发者低成本、高效地启动嵌入式实时操作系统开发。 阅读详情
/*******************************************************************************
函数名:OpenServerWithStartTypeByName
函数功能:以请求的方式打开服务
函数参数:
strServerName: 服务名称
nStartType: 启动方式
函数返回值:
TRUE : 设置成功
FALSE: 设置失败
函数描述:
********************************************************************************/
BOOL OpenServerWithStartTypeByName(CString strServerName,int nStartType)
{
if((SERVICE_BOOT_START>nStartType)||(SERVICE_DISABLED<nStartType))
{
OutputDebugStringA("OpenServerWithAutoByName----无法以设置的方式启动服务");
return FALSE;
}

BOOL bRet = TRUE;
SC_HANDLE hScm;  
SC_HANDLE hService; 
//LPQUERY_SERVICE_CONFIG lpsc; 
DWORD dwBytesNeeded, cbBufSize, dwError;
CString strServicename = strServerName;
//打开服务管理器
if((hScm=OpenSCManagerA(NULL,NULL,SC_MANAGER_ALL_ACCESS))==NULL)  
{  
CloseServiceHandle(hScm);  
int nErr = GetLastError();
CString strErr ;
strErr.Format("NTP:Get Service Manager Fail:%d",nErr);
OutputDebugStringA(strErr);
return false;  
}  
//打开服务
hService=OpenServiceA(hScm, strServicename,SERVICE_ALL_ACCESS);  
if(!hService)
{  


CloseServiceHandle(hScm); 
int nErr = GetLastError();
CString strErr ;
strErr.Format("NTP:Get Service Handle Fail:%d",nErr);
OutputDebugStringA(strErr);
return FALSE;
}
//改变服务启动方式为自动
QUERY_SERVICE_CONFIGA ServiceConfig;
DWORD dwNeed = 0;
//查询服务启动状态
QueryServiceConfigA(hService,&ServiceConfig,sizeof(QUERY_SERVICE_CONFIGA),&dwNeed);
if (nStartType!=ServiceConfig.dwStartType)
{
//改服务状态
SC_LOCK sclLockA;  
sclLockA = LockServiceDatabase(hScm);
if (sclLockA != NULL)
{
bRet = ChangeServiceConfigA(  
hService, // handle of service  
SERVICE_NO_CHANGE, // service type: no change  
nStartType, // 这里做了更改  
SERVICE_NO_CHANGE, // error control: no change  
NULL, // binary path: no change  
NULL, // load order group: no change  
NULL, // tag ID: no change  
NULL, // dependencies: no change  
NULL, // account name: no change  
NULL, // password: no change  
NULL);
if (FALSE == bRet)
{
CloseServiceHandle(hService);  
CloseServiceHandle(hScm); 
return FALSE;
}


}
else
{
SC_LOCK sclLockB;  
sclLockB = LockServiceDatabase(hScm);  
if (sclLockB != NULL)
{
bRet = ChangeServiceConfigA(  
hService, // handle of service  
SERVICE_NO_CHANGE, // service type: no change  
nStartType, // 这里做了更改  
SERVICE_NO_CHANGE, // error control: no change  
NULL, // binary path: no change  
NULL, // load order group: no change  
NULL, // tag ID: no change  
NULL, // dependencies: no change  
NULL, // account name: no change  
NULL, // password: no change  
NULL);
if (FALSE == bRet)
{
CloseServiceHandle(hService);  
CloseServiceHandle(hScm); 
return FALSE;
}
}
}


}
SERVICE_STATUS status; 
//查询服务状态
QueryServiceStatus(hService,&status);
if(SERVICE_RUNNING == status.dwCurrentState)
{
//服务已经开启
CloseServiceHandle(hService);  
CloseServiceHandle(hScm); 
return TRUE;
}
if(SERVICE_STOPPED == status.dwCurrentState)
{
//服务未启动则开启服务
bRet = StartServiceA(hService, 0, NULL);
if ((0 == bRet)||(ERROR_SERVICE_DISABLED == GetLastError()))
{
CloseServiceHandle(hService);  
CloseServiceHandle(hScm); 
return FALSE;


}
}
CloseServiceHandle(hService);  
CloseServiceHandle(hScm); 
return TRUE;




}

使用示例:

CString strServiceName = "W32Time";
BOOL bRet =  OpenServerWithStartTypeByName(strServiceName,SERVICE_AUTO_START);
if (FALSE == bRet)
{
//MessageBox(NULL,"Open Service Fail",NULL,0);
return FALSE;

}

相关推荐

为什么Nano Banana在图像一致性上碾压GPT和豆包?深度解析其技术原理与使用技巧

本文深度解析了Nano Banana在图像一致性上超越GPT和豆包等工具的技术原理。它通过基于参考图的强条件生成、精准的区域感知与掩码控制等核心技术,实现了“外科手术式”的精准图像编辑。文章还分享了包括提示词工程、参数调整在内的实用技巧,并探讨了通过API Key将其能力集成到自动化工作流中的潜力。

omega的博客 358

SERVICE_BOOT_START 驱动程序逆向

21:33 2007-9-20今天发现了 syser debugger  的 SDbgMsg.sys。 这个驱动程序就是SERVICE_BOOT_START  类型的驱动程序, 在windows 启动后最新给出提示信息 "Press "ESC" to Cancel Load Syser Boot  Module ",我想看看到底是怎样编程实现的:打开 IDA 载入 SDbgMsg.sys

FISH 的专栏 3432

【机器人】线性方程最小二乘解法对机械臂DH参数进行标定

1.前言 看了一篇文章,觉得里面的DH参数标定法讲的很清晰,便使用Matlab复现了一下,效果还可以,特写此文记录。 2.原理 2.1.误差最佳值的最小二乘计算 有研究结果表明:几乎95%的机器人位置误差都是由机器人内部运动学的不准确描述引起的,所以对DH模型参数进行标定是很有必要的。 DH参数物理含义:选自《机器人学、机器视觉与控制-Matlab基础》 当DH参数确定后,我们...

要恰饭得嘛 1万+

SERVICE_BOOT_START 驱动程序逆向 2

.text:000104D2 ; void __stdcall DeferredRoutine(struct _KDPC *,PVOID,PVOID,PVOID).text:000104D2 DeferredRoutine proc near               ; DATA XREF: start+15Co.text:000104D2                 xor     e

FISH 的专栏 1811

芯片低功耗设计的两种常用EDA流程

如题。

EricWZY2008的专栏 5558

为什么BGA焊点总在四个角先坏?一次热-振耦合仿真给你讲明白

本文通过Ansys Workbench进行热-振耦合仿真,深入分析了BGA焊点在四个角点先失效的机理。研究发现,角点焊点由于CTE失配、振动载荷放大及几何应力集中等因素,承受的等效塑性应变和动态应力显著高于中心区域,导致其疲劳寿命大幅降低。仿真数据揭示了角点焊点的应力分布和蠕变特性,为电子封装可靠性设计提供了重要依据。

weixin_42535461的博客 439

nt驱动CreateService创建SERVICE_BOOT_START级别服务报错87

在网上看了一个关于nt驱动安装卸载的例子,于是自己写了需要SERVICE_BOOT_START级别启动的驱动,但是安装的时候报错了,错误码是87。但是我只是改了一个级别而已,没道理会出错的。然后我只是简单的把驱动文件复制到C:\Windows\System32\Drivers目录。再执行一遍,居然成功了。不改级别的时候,测试过,路径不需要指定。可能因为这个级别的特殊性吧。...

youyudexiaowangzi的专栏 1600

我爬取了某非法网贷后台系统数据,终于知道什么叫做利滚利滚利滚利了

我爬取了非法贷款的后台网站!

weixin_44042821的博客 2882

windows 内核原理与实现读书笔记之驱动程序初始化

I/O系统的初始化是在内核的阶段1初始化过程中完成的。主要函数是Phase1InitializationDiscard,它调用IoInitSystem 来初始化I/O系统。 IoInitSystem 初始化工作: 调用IopCreateObjectTypes ,创建7种类型对象:Adapter、DeviceHandler、Controller、Device、Driver、IoCompletion、File,并存放在相应的全局变量中。 WRK中的全局类型对象变量,如下表: CmpKeyObjec

maomao171314的专栏 1366

脑机接口最新发展动态报告 (2024-2025)

脑机接口动态

高山 4108

C# Blazor Server工业监控Web UI:实时数据推送、历史曲线、报警记录,跨浏览器访问(踩坑总结+生产可用)

坑点现象解决方案StateHasChanged()太频繁服务器CPU占用高,浏览器卡顿别100ms刷新一次,1秒刷新一次足够并发高时服务器卡多个用户同时访问,服务器响应慢用Redis做分布式缓存,或者加服务器做负载均衡断线重连后数据丢失浏览器刷新后,实时数据不更新用InfluxDB存历史数据,刷新后重新查询工业现场网络不稳定Blazor Server频繁断线用SQLite本地缓存,断网时数据不丢,联网后补发历史曲线查询慢查询过去7天的数据,要等很久。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 311

《Windows内核原理与实现笔记》(三)Windows引导过程

内核加载 在Intel x86系统上,Windows操作系统获得控制首先从硬盘的主引导记录(MBR,MasterBoot Record)开始,Windows Setup程序在安装Windows时填充MBR(其他的磁盘管理程序也可能填充MBR)。MBR包含代码和数据,其代码称为引导代码,在系统引导时首先获得控制;MBR中的数据是一张分区表,指定了每个分区在磁盘上的位置和大小,以及分区的类型。当...

kernweak的博客 1381

学Simulink--基础储能管理场景实例:基于Simulink的储能SOC均衡控制策略仿真

本文完成了基于 Simulink 的储能 SOC 均衡控制策略仿真,实现了:✅掌握并联系统 SOC 分化机理✅构建基于电流重分配的主动均衡架构✅验证均衡对系统可用容量的显著提升✅实现 SOC 偏差 < 2% 的高精度控制。

amy_mhd的博客 85

服务器系统开启telnet,Telnet怎么打开 Win7/Win8系统开启Telnet服务方法图解

Telnet是管理员常用的远程登录和管理工具,通过在本地电脑上运行Telnet客户端服务,就可以远程控制远端的Telnet服务器了。在Windows 2003/XP/Vista/Win7/Win8系统中都集成有Telnet服务。过默认情况下Telnet服务是被禁用的,需要使用的朋友,需要手动开启。那么Telnet怎么打开?相信很多新手朋友都不太了解,下面笔者以Win7/Win8系统为例,教大家如何...

weixin_30045597的博客 5235

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

巧用bat批量开启关闭服务

我自己这边加了MySQL、Oracle10G。如果自己相加的话,可以自己照着写一下。 其中用到的语句其实蛮简单的。这里就只写几个比较关键的。 net start 服务名 开启某服务 net stop 服务名 关闭某服务 注:如果服务名有空格,则用双引号括起来。另外服务名不是服务显示的名称,你要右键服务属性才能看到服务名。有时候显示的名称就是服务名。 sc config 服务名 start...

weixin_30569153的博客 435

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何开启MYSQL

开始->运行->services.msc 里面找名称MySQL服务双击打开属性 点启动 想要开机自动启动把启动类型改成自动否则改成手动

melook 531

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Powershell与jenkins集成部署的运用(powershell运用)

powershell简介: 远程管理采用的一种新的通信协议,Web Services for Management,简称WS-MAN它通过http或者https进行工作,WS-WAN的实现主要基于一个后台服务:Windows远程管理(WinRM)。Server2008R2中默认开启该服务,从Server2012开始,该服务便集成在系统中默认开启,Win7默认安装此服务,但是默认为禁用状态,Win

iZYH的博客 3299

L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误

L2TP连接尝试失败,因为安全层在初始化与远程计算机的协商时遇到了一个处理错误

。。。。 2万+

关于XP系统远程桌面的一点点记录

关于XP系统远程桌面的一点点记录 由于今天事情比较多,而公司的测试系统又出问题了,没有办法只能重装系统。 重装系统是一件对于我们来说,已经是很容易的事情了。而且不是被逼到无奈,谁都不想重装系统呢。 系统安装完毕,设置登录密码,关闭防火墙,开启远程桌面。 测试一下,在其他机器都能正常登陆的。于是,备份一下。备份结束后,在此连接,却无法连接。...

weixin_34254823的博客 109

win7远程桌面连接失败问题

(1)首先,我先设定了下面 但是出现一个问题说:没有开启防火墙服务。通过查找资料才知道是由于Application Layer Gateway Service没有启动。然后用win + r输入services.msc找到相关服务并开启。 (2)然后,设置了电源选项,使被远程的电脑不进入休眠模式。 当设置好后,使用另一台电脑进行远程却不能连接上。但是services.msc上该开的

喜欢哲学的女孩 2503

(三)Kafka离线安装 - ZooKeeper开机自启

一般通过指令手动来启动zookeeper的方法是,先进入到zookeeper的安装目录下的bin目录,然后执行启动指令。上面的方式是通过手动启动,关闭的。ExecReload后面跟的是zookeeper的重启指令,关于文件路径替换为自己的就行。ExecStart后面跟的是zookeeper的启动指令,关于文件路径替换为自己的就行。ExecStop后面跟的是zookeeper的停止指令,关于文件路径替换为自己的就行。这里是通过创建系统服务,然后把这个系统服务设置开机自启,从而达到想要的目的。

清风ai明月的专栏 1173

IIS-关于网站发布后能访问登陆页面,但是一直未响应的问题

转载。 https://blog.youkuaiyun.com/milijiangjun/article/details/89449159 事由:今天将一个项目拷贝到iis 中,然后设置完端口以后出现了一个问题,就是能访问登陆界面,输入后一直无响应 表现: 然后查看是否是自己的数据库配置webconfig 错了。然后改正了。环视这个错误 然后查证了资料后发现是iis 的session 状态服务需要开启 解决...

Zola的博客 3356

linux计划任务---crontab的使用

网址:http://blog.youkuaiyun.com/zlzlei/article/details/7767599 1:cron服务相关     a:查看crond服务的启动情况          chkconfig --list | grep crond     b:开启和重新开启crond服务         /etc/init.d/crond start        

字符集-utf8 874

Scribble条件驱动ResEnc U-Net的多示踪剂PET/CT交互式病灶分割

医学图像分割是临床诊断与治疗规划的关键技术,U-Net作为主流深度学习架构,在病灶提取中展现了强大能力。然而,面对多示踪剂PET/CT影像,不同示踪剂的摄取差异、复杂背景及高标注成本,使全自动分割模型难以稳定泛化。交互式分割通过引入用户提示,将医生经验与模型预测结合,成为提升分割精度与实用性的重要路径。本文以涂鸦(Scribble)作为交互条件,结合ResEnc U-Net残差编码架构,实现多示踪剂PET/CT病灶的高效交互式分割。文章系统讲解任务设计、数据组织、模型搭建、训练策略与工程排错,并给出可复现的

weixin_34163553的博客 394

vmware下的linux没有网络问题解决思路

这里使用的NAT连接方式 1.首先保证本机联网正常 2.检查虚拟机相应的服务(VMware NET Service 和 VMware Workstation Server)是否已确认打开   检查方式1:      可以把服务设置为自动启动,也可以每次都手动启动,这个看自己的需求 ......

优质后端技术知识记录 3174

SecureCRT乱码问题解决

我是win10的系统,找不到防火墙, cmd里面输入“services.msc” 点击确定或回车 找到“Windows Defender Firewall”服务点击打开窗口,将启动方式改为自动然后应用 在控制面板输入“防火墙” 症状:宿主机通ping通虚拟机,虚拟机却不能ping通宿主机,把防火墙关闭后虚拟机可以ping通宿主机 原因:ICMP被防火墙禁止了 解决办法:防火墙->高级设置->入站规则,开启“文件与打印机共享(回显请求-ICMPv4-I...

天天的博客 2713
上一篇: w32time服务自动更新时间(NTP)
下一篇: 修改注册表值
开发农民
博客等级 码龄10年 12粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值