当前位置: 首页 > news >正文

windows c++ (9) 程序内注册服务并修改登录账户

实现方式全以批处理文件实现,直接在进程内调用即可

1、注册服务

注册服务manage.bat内容如下

@echo off
setlocalset ServiceExe=YouProcess.exe
set ServiceName=YouProcess
set BASE=%~dp0:: 检查命令行参数
if "%~1"=="" (echo Usage: manage_process.bat start|stop|installexit /b 1
):: 启动服务
if /i "%~1"=="start" (echo 启动服务...NET START %ServiceName%exit 
):: 停止服务
if /i "%~1"=="stop" (echo 停止服务...NET STOP %ServiceName%exit 
):: 安装服务
if /i "%~1"=="install" (echo 安装服务...start %BASE%%ServiceExe% "-install"echo 安装成功exit 
)echo Invalid argument: %~1
echo Usage: manage.bat start|stop|install
exit /b 1

安装指令:

manage.bat install

启动指令

manage.bat start

在项目过程中,如果你想实现卸载等操作直接在批处理文件内新增就行。

2、修改服务的登录账户

sc config YouProcess obj= ".\username" password= "yourpasd"

3、修改策略文件,将账户添加到服务登录权限组内

@echo off
setlocal enabledelayedexpansion:: 定义临时文件路径和数据库文件路径
set "policyFilePath=C:\secpol.cfg"
set "tempPolicyFile=%policyFilePath%.tmp"
set "databaseFile=C:\Windows\security\database\seccontent.sdb"  
:: 默认数据库路径:: 导出当前的安全策略
echo Exporting current security policy...
secedit /export /cfg "%policyFilePath%" || (echo Failed to export security policy.exit /b 1
):: 检查是否已存在目标配置
set "policyFound="
for /f "tokens=* delims=" %%a in ('type "%policyFilePath%" ^| findstr /i "SeServiceLogonRight"') do (set "policyFound=1"
):: 修改策略文件
(for /f "tokens=* delims=" %%a in ('type "%policyFilePath%"') do (set "line=%%a"if "!line:SeServiceLogonRight=!" neq "!line!" (echo SeServiceLogonRight = username,*S-1-5-80-0) else (echo %%a))if not defined policyFound (echo SeServiceLogonRight = username,*S-1-5-80-0)
) > "%tempPolicyFile%":: 替换原始文件
move /y "%tempPolicyFile%" "%policyFilePath%" >nul || (echo Failed to replace policy file.del "%tempPolicyFile%" >nul 2>&1exit /b 1
):: 导入修改后的安全策略(明确指定数据库文件)
echo Importing modified security policy...
secedit /configure /db %databaseFile% /cfg "%policyFilePath%" /areas USER_RIGHTS /overwrite /quiet || (
:: secedit /import /db "%databaseFile%" /cfg "%policyFilePath%" /areas USER_RIGHTS /overwrite || (echo Failed to import security policy. Check the log file: %windir%\security\logs\scesrv.logexit /b 1
):: 重启依赖服务(替代直接重启Winlogon)
echo Restarting dependent services...
net stop "User Manager" /y >nul 2>&1
net stop "Credential Manager" /y >nul 2>&1
net start "User Manager" >nul 2>&1
net start "Credential Manager" >nul 2>&1:: 提示重启系统(可选)
:: echo.
:: echo Note: A system restart may be required for changes to take effect fully.
:: echo Do you want to restart now? (Y/N)
:: set /p choice=
:: if /i "!choice!"=="Y" (
::     shutdown /r /t 0
:: ):: 清理临时文件(注释掉,按需启用)
:: echo Cleaning up...
:: del "%policyFilePath%" >nul 2>&1
:: del "%tempPolicyFile%" >nul 2>&1echo Operation completed successfully.

你需要修改标红的用户名称即可
在这里插入图片描述

相关文章:

  • web 自动化之 yaml 数据/日志/截图
  • 关于github使用总结
  • GNU Screen 曝多漏洞:本地提权与终端劫持风险浮现
  • 集合-进阶
  • 生产排产系统正从传统计划工具向智能化、协同化方向演进
  • 安科瑞能量管理系统在徐州某电池厂新能源储能柜的应用
  • TDengine 做为 Spark 数据源
  • spark-local模式
  • Linux513 rsync本地传输 跨设备传输 一
  • openFeign远程调用
  • 中国版Cursor:基于CodeBuddy与EdgeOne Pages的在线键盘测试工具开发方案
  • 【C++】多线程和多进程
  • 【实战】基于 ABP vNext 构建高可用 S7 协议采集平台(西门子 PLC 通信全流程)
  • VR和眼动控制集群机器人的方法
  • Flannel Host-gw模式的优缺点
  • 生成式图像水印研究综述
  • 一键转换上百文件 Word 批量转 PDF 软件批量工具
  • C程序的存储空间分配
  • 【OpenCV】网络模型推理的简单流程分析(readNetFromONNX、setInput和forward等)
  • 大容量存储的高性能 T-BOX 方案对智能网联汽车的支撑
  • 大外交|巴西总统卢拉第六次访华签署20项协议,“双方都视对方为机遇”
  • 《克莱默夫妇》导演罗伯特·本顿去世,终年92岁
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 摩根士丹利:对冲基金已加码,八成投资者有意近期增配中国
  • 马上评丨75万采购300元设备,仅仅终止采购还不够
  • 全球医药股普跌,A股创新药板块下挫