怎样让程序以system权限运行

怎样让程序以system权限运行,第1张

点击右键,使用以管理员身份运行。

在这个文件上单击右键选清宏择运行方式,然后输入用户名和密码就可以了。选专业的可以用System用户的身份运行任何应用程序桐正培,运行后程序将具有更高的权限局唯。

其实这个都是系统system权限都铅竖是塌则相对的,不过可以用CreateService创建服务来实现哈!

新建一个空的,名为CreateService 控制台工程,再新建一个CreateService.cpp文件,下面代码粘贴进去。。。

#include "Windows.h"

#include "Winsvc.h"

#include "time.h"

#include "stdio.h"

SERVICE_STATUS m_ServiceStatus

SERVICE_STATUS_HANDLE m_ServiceStatusHandle

BOOL bRunning=true

void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)

void WINAPI ServiceCtrlHandler(DWORD Opcode)

BOOL InstallService()

BOOL DeleteService()

void DoTask()

{

//do something here

}

void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)

{

// DWORD status

//团激棚 DWORD specificError

m_ServiceStatus.dwServiceType = SERVICE_WIN32

m_ServiceStatus.dwCurrentState = SERVICE_START_PENDING

m_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP

m_ServiceStatus.dwWin32ExitCode= 0

m_ServiceStatus.dwServiceSpecificExitCode = 0

m_ServiceStatus.dwCheckPoint = 0

m_ServiceStatus.dwWaitHint = 0

//m_ServiceStatus.dwServiceType = SERVICE_AUTO_START

m_ServiceStatusHandle = RegisterServiceCtrlHandler("Service2",ServiceCtrlHandler)

if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0)

{

return

}

m_ServiceStatus.dwCurrentState = SERVICE_RUNNING

m_ServiceStatus.dwCheckPoint = 0

m_ServiceStatus.dwWaitHint = 0

if (!SetServiceStatus (m_ServiceStatusHandle, &m_ServiceStatus))

{

}

bRunning=true

while(bRunning)

{

Sleep(3000)

//Place Your Code for processing here....

DoTask()

//Sleep(60*1000)

}

return

}

void WINAPI ServiceCtrlHandler(DWORD Opcode)

{

switch(Opcode)

{

case SERVICE_CONTROL_PAUSE:

m_ServiceStatus.dwCurrentState = SERVICE_PAUSED

break

case SERVICE_CONTROL_CONTINUE:

m_ServiceStatus.dwCurrentState = SERVICE_RUNNING

break

case SERVICE_CONTROL_STOP:

m_ServiceStatus.dwWin32ExitCode = 0

m_ServiceStatus.dwCurrentState= SERVICE_STOPPED

m_ServiceStatus.dwCheckPoint = 0

m_ServiceStatus.dwWaitHint= 0

SetServiceStatus (m_ServiceStatusHandle,&m_ServiceStatus)

bRunning=false

break

case SERVICE_CONTROL_INTERROGATE:

break

}

return

}

BOOL InstallService()

{

char strDir[1024]

HANDLE schSCManager,schService

GetCurrentDirectory(1024,strDir)

strcat(strDir,"\\CreateService.exe")

schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS)

if (schSCManager == NULL)

return false

LPCTSTR lpszBinaryPathName=strDir

schService = CreateService((struct SC_HANDLE__ *)schSCManager,"Service2","MB Service", // service name to display

SERVICE_ALL_ACCESS, // desired access

SERVICE_WIN32_OWN_PROCESS, // service type

SERVICE_DEMAND_START,// start type

SERVICE_ERROR_NORMAL,// error control type

lpszBinaryPathName, // service's binary

NULL,// no load ordering group

NULL,// no tag identifier

NULL,// no dependencies

NULL,// LocalSystem account

NULL) // no password

if (schService == NULL)

return false

CloseServiceHandle((struct SC_HANDLE__ *)schService)

return true

}

BOOL DeleteService()

{

HANDLE schSCManager

SC_HANDLE hService

schSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS)

if (schSCManager == NULL)

return false

hService=OpenService((struct SC_HANDLE__ *)schSCManager,"Service2",SERVICE_ALL_ACCESS)

if (hService == NULL)

return false

if(DeleteService(hService)==0)

return false

if(CloseServiceHandle(hService)==0)

return false

else

return true

}

int main(int argc, char* argv[])

{

if(argc>1)

{

if(strcmp(argv[1],"-i")==0) {

if(InstallService())

printf("\nMB Service Installed Sucessfully\n")

else

printf("\nMB Service has been installed\n")

} else if(strcmp(argv[1],"-d")==0) {

if(DeleteService())

printf("\nMB Service UnInstalled Sucessfully\n")

else

printf("\nInstalled Easin Central Service Not Found\n")

} else {

printf("\nUnknown Switch Usage\nFor Install use Servicetest -i\nFor UnInstall use Servicetest -d\n")

}

}

else

{

SERVICE_TABLE_ENTRY DispatchTable[]={{"Service2",ServiceMain},{NULL,NULL}}

StartServiceCtrlDispatcher(DispatchTable)

}

return 0

}

成功编译后,生成一个CreateService.exe,使用cmd-cd CreateService.exe目录下面,输入CreateService.exe -i安装服务

CreateService.exe -d 删除服务

有点繁琐,然后开始 - 运行 - service.msc 找到,MB Service ,右键启动。

现在到任务管理器里面去看,是不是有个CreateService.exe 【System进程的权限】

不懂的再问我哈!Good Lucky


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12506469.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存