递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库

请求[ 服务类 ]添加[ 置服务启动类型 ]

查看数: 3878 | 评论数: 12 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2024-5-12 13:24

正文摘要:

  Windows服务有些会自动意外停止,   便写了个服务状态监测恢复的小程序,   但对[ 启动类型 ]为[ 已禁用 ]的服务使用[ 启动服务 ]并不起作用,   需将[ 启动类型 ] ...

回复

w5717 发表于 4 天前

牛比,我那个版本是抄的易语言过来的,x64x86都可以用,W版本的不知道通不通用了
yuangao 发表于 4 天前
w5717 发表于 2025-3-31 09:51
不知道,可能偷懒吧
OpenSCManagerW  



<火山程序 类型 = "通常" 版本 = 1 />
方法 置启动类型 <公开 静态 类型 = 逻辑型 @禁止流程检查 = 真 @视窗.外部头文件 = "..\\um\\winsvc.h">
参数 服务名称 <类型 = 文本型>
参数 启动类型 <类型 = 变整数 注释 = "启动类型以下选项:2=自动;3=手动;4=禁用" @默认值 = 2>
{
    @ SC_HANDLE schSCManager = NULL;
    @ SC_HANDLE schService = NULL;
    @ BOOL bresult = FALSE;
    // 打开服务控制管理器数据库(使用W版本)
    @ schSCManager = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    @ if (schSCManager != NULL)
    @ {
    @     // 直接传递宽字符服务名称(无需转换)
    @     schService = OpenServiceW(schSCManager, (LPCWSTR)@<服务名称>, SERVICE_CHANGE_CONFIG);
    @     if (schService != NULL)
    @     {
    @         // 调用W版本配置函数
    @         bresult = ChangeServiceConfigW(
    @             schService,
    @             SERVICE_NO_CHANGE,
    @             (DWORD)@<启动类型>,
    @             SERVICE_NO_CHANGE,
    @             NULL, NULL, NULL, NULL, NULL, NULL, NULL
    @         );
    @         CloseServiceHandle(schService);
    @     }
    @     else
    @     {
    @         // 调试时获取错误码
    @         // DWORD dwError = GetLastError();
    @     }
    @ }
    @ CloseServiceHandle(schSCManager);
    @ return bresult;
}
w5717 发表于 4 天前
yuangao 发表于 2025-3-31 09:14
感谢,  老吴, 为什么不添加进去..

不知道,可能偷懒吧
yuangao 发表于 4 天前
w5717 发表于 2025-3-30 18:51
https://wwtt.lanzn.com/iOanM2s55xcb
winsvc.h 文件要到火山库里自己找,这份代码是借鉴 AI 生成后修改的 ...

感谢,  老吴, 为什么不添加进去..
w5717 发表于 5 天前
本帖最后由 w5717 于 2025-3-30 18:55 编辑

https://wwtt.lanzn.com/iOanM2s55xcb
winsvc.h 文件要到火山库里自己找,这份代码是借鉴 AI 生成后修改的,我最近也是用到服务类,发现没有 置启动类型
yuangao 发表于 2025-3-25 16:22:40
本帖最后由 yuangao 于 2025-3-25 17:05 编辑

至今,还是没有
使用命令方式吧

sc config XXXX  star= demand
demand(手动) auto(自动) disabled(禁止)


见性成佛 发表于 2024-5-14 08:24:04
hrq520 发表于 2024-5-13 14:54
这不好搞   重装服务   我是考虑过   但服务有些是指定用户账号和密码的  获取不到  就还原不了,最好还 ...

搞二个服务试试。你怎么指定帐号和密码的么, 加扣扣交流下么, 我现在有一个服务,我是注入程序的
server 发表于 2024-5-13 21:13:38
hrq520 发表于 2024-5-13 14:54
这不好搞   重装服务   我是考虑过   但服务有些是指定用户账号和密码的  获取不到  就还原不了,最好还 ...

亲亲宝子,你听说过双向监控,多向监控吗?
不过好像也不太行。
想搞你,你防不住,如果只是想简单保护的话,注册2个服务,互相监控,发现状态不对就修改并重启计算机。
你查查 netsh 命令吧,不懂的找    通义千问。

比较其他智障AIchat,越问越迷糊。
就问:windows C++ 环境下,服务程序 检测自身状态变化。
另外,不是有服务中止 这个 事件吗?

你直接不容许他结束,完了修改状态,重启。
hrq520 发表于 2024-5-13 14:54:44
见性成佛 发表于 2024-5-13 11:53
可以这样搞,如果禁止了,删除服务再启动?

这不好搞   重装服务   我是考虑过   但服务有些是指定用户账号和密码的  获取不到  就还原不了,最好还是直接 置服务启动状态,要不我也不发帖了

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2025-4-4 12:17 , Processed in 0.093340 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表