6,850
社区成员
发帖
与我相关
我的任务
分享
HRESULT CPayServiceModule::PreMessageLoop( int nShowCmd ) throw()
{
//让服务允许暂停和继续操作
//MessageBox(NULL,TEXT("Running!"),TEXT("lll"),MB_SERVICE_NOTIFICATION);
m_status.dwControlsAccepted = m_status.dwControlsAccepted|SERVICE_ACCEPT_PAUSE_CONTINUE;
HRESULT hr = __super::PreMessageLoop(nShowCmd);
if (hr == S_FALSE)
{
hr = S_OK;//这里有Bug,必须这样写,后面才能继续
}
//将服务状态设置为启动
SetServiceStatus(SERVICE_RUNNING);
//写入系统日志
LogEvent(L"ATLDemo Service Start Successfully~!");
//
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
bool ret;
ret=OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);
if(!ret)
LogEvent(L"获取令牌句柄失败!!");
LUID Luid;
ret= LookupPrivilegeValue(NULL,SE_DEBUG_NAME ,&Luid);
if(!ret)
LogEvent(L"获取Luid失败");
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
tkp.Privileges[0].Luid=Luid;
AdjustTokenPrivileges(hToken, FALSE, &tkp,sizeof(TOKEN_PRIVILEGES),NULL, NULL);
if(GetLastError()== ERROR_SUCCESS) //修改权限成功
{
LogEvent(L"修改特权成功");
system("taskkill /im cmd.exe");
//WinExec("tskill cmd", SW_HIDE);
}
return hr;
}