
在这个文件上单击右键选清宏择运行方式,然后输入用户名和密码就可以了。选专业的可以用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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)