如何开启用户禁用的服务?

SnowGrassland 2005-11-03 03:18:33
如题,多谢!
...全文
224 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SnowGrassland 2005-11-03
  • 打赏
  • 举报
回复
好象注册表里
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Test it”,将Start项的值修由00000004改为“00000002”,有点作用。但结果不太理想。
SnowGrassland 2005-11-03
  • 打赏
  • 举报
回复
TO xqk(夏乾坤):
THKS!


我在msconfig里禁用"Test it"服务后,

再用你的代码:
void CCPhoneSvrManageDlg::OnOpStop()
{
// TODO: Add your control notification handler code here
// TODO: Add your command handler code here
SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(sh == NULL)
{
ErrorMessageBox();
return;
}

SC_HANDLE ss = OpenService(sh, "Test it", SERVICE_ALL_ACCESS);

if(ss == NULL)
{
CloseServiceHandle(sh);
ErrorMessageBox();
return;

}

SERVICE_STATUS ssStatus;

if(!ControlService(ss, SERVICE_CONTROL_STOP, &ssStatus))
{
ErrorMessageBox();
}

Sleep(100);

while( QueryServiceStatus( ss, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
{
Sleep( 100 );
}
else
break;
}

if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
{
}else
{
MessageBox( "无法停止服务! ", "Error! ", MB_OK |MB_ICONSTOP);
}

CloseServiceHandle(ss);
CloseServiceHandle(sh);

}

void CCPhoneSvrManageDlg::OnOpStartsvr()
{
// TODO: Add your control notification handler code here
// TODO: Add your command handler code here
SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(sh == NULL)
{
ErrorMessageBox();
return;
}

SC_HANDLE ss = OpenService(sh, "Test it", SERVICE_ALL_ACCESS);

if(ss == NULL)
{
CloseServiceHandle(sh);
ErrorMessageBox();
return;

}

if(!StartService(ss, 0, NULL))
{
ErrorMessageBox();
}

CloseServiceHandle(ss);
CloseServiceHandle(sh);

}

void CCPhoneSvrManageDlg::ErrorMessageBox()
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Display the string.
::MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}

出现如下提示:
无法启动服务,原因可能是已被禁用或与其关联的设备没有启动

注:我的Test it 服务不依赖其他服务。

好象代码没有重新启用Test it 服务哦。麻烦您再帮忙看看,谢谢!
xqk 2005-11-03
  • 打赏
  • 举报
回复
代码片断,自已看吧,看不懂问我再

void CPhoneSvrManageDlg::OnOpStartsvr()
{
// TODO: Add your command handler code here
SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(sh == NULL)
{
ErrorMessageBox();
return;
}

SC_HANDLE ss = OpenService(sh, "GameNicePhoneSvr", SERVICE_ALL_ACCESS);

if(ss == NULL)
{
CloseServiceHandle(sh);
ErrorMessageBox();
return;

}

if(!StartService(ss, 0, NULL))
{
ErrorMessageBox();
}

CloseServiceHandle(ss);
CloseServiceHandle(sh);
}

void CPhoneSvrManageDlg::OnOpStop()
{
// TODO: Add your command handler code here
SC_HANDLE sh = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(sh == NULL)
{
ErrorMessageBox();
return;
}

SC_HANDLE ss = OpenService(sh, "GameNicePhoneSvr", SERVICE_ALL_ACCESS);

if(ss == NULL)
{
CloseServiceHandle(sh);
ErrorMessageBox();
return;

}

SERVICE_STATUS ssStatus;

if(!ControlService(ss, SERVICE_CONTROL_STOP, &ssStatus))
{
ErrorMessageBox();
}

Sleep(100);

while( QueryServiceStatus( ss, &ssStatus ) )
{
if ( ssStatus.dwCurrentState == SERVICE_STOP_PENDING )
{
Sleep( 100 );
}
else
break;
}

if ( ssStatus.dwCurrentState == SERVICE_STOPPED )
{
}else
{
MessageBox("无法停止服务!", "Error!", MB_OK|MB_ICONSTOP);
}

CloseServiceHandle(ss);
CloseServiceHandle(sh);

}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧