note : RemoveServiceByName
发布日期:2021-06-30 22:04:23 浏览次数:2 分类:技术文章

本文共 1633 字,大约阅读时间需要 5 分钟。

服务的安装代码错了,导致权限不够,无法创建当前用户的进程。

需要卸载服务后,重新进行正确的服务安装。

需要先卸载, 整理了如下卸载函数。

/// @file RemoveService.cpp : Defines the entry point for the console application./// @note requireAdministrator (/level='requireAdministrator')///		after execute this program, reboot PC, the service will be to remove#include "stdafx.h"#include 
#define SERVICE_NAME _T("xxService")BOOL RemoveServiceByName(WCHAR * pcServiceName);int _tmain(int argc, _TCHAR* argv[]){ BOOL bRc = FALSE; bRc = RemoveServiceByName(SERVICE_NAME); wprintf(L"Remove \"%s\" = %s\r\n", SERVICE_NAME, bRc ? L"TRUE" : L"FALSE"); wprintf(L"END, press any key to quit\r\n"); getwchar(); return 0;}BOOL RemoveServiceByName(WCHAR * pcServiceName){ BOOL bRc = FALSE; long lRc = 0; WCHAR cBuf[MAX_PATH] = {L'\0'}; SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; if (NULL == pcServiceName) return FALSE; schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS); if (NULL == schSCManager) { lRc = GetLastError(); _swprintf(cBuf, L"OpenSCManager failed, error code = %d\n", lRc); wprintf(cBuf); } else { schService = OpenService( schSCManager, pcServiceName, SERVICE_ALL_ACCESS); if (NULL == schService) { lRc = GetLastError(); _swprintf(cBuf, L"OpenService failed, error code = %d\n", lRc); wprintf(cBuf); } else { if (!DeleteService(schService)) { _swprintf(cBuf, L"Failed to delete service %s\n", pcServiceName); wprintf(cBuf); } else { bRc = TRUE; _swprintf(cBuf, L"Service %s removed\n", pcServiceName); wprintf(cBuf); } CloseServiceHandle(schService); } CloseServiceHandle(schSCManager); } return bRc;}

转载地址:https://lostspeed.blog.csdn.net/article/details/18366987 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:note : SetServiceStatus
下一篇:note : windows message process

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月22日 03时02分03秒