如何开启用户禁用的服务? 如题,多谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码片断,自已看吧,看不懂问我再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); } 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 服务哦。麻烦您再帮忙看看,谢谢! 好象注册表里“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Test it”,将Start项的值修由00000004改为“00000002”,有点作用。但结果不太理想。 CFileDialog DoModal后其它窗口键盘消息无法响应 请教一个高端问题 求openGL作三维坐标系和曲面(彩色) 请高手解决一个程序运行时的错误!! 请问如何才能使窗口不能人为地改变大小呢?像对话框那样。 ==如何下载整个网站到硬盘?? ???如何对一个文件夹里面的所有文件进行写操作 AnimateWindow函数 帮帮我好吗?各位ggjjddmm!解决了马上给分啊! spcomm的数据接收,高手过来帮忙 关于SOCKET中的recv,急急急,在线 弹出式进度条,难,100分求解,急,在线等
{
// 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);
}
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 服务哦。麻烦您再帮忙看看,谢谢!
“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Test it”,将Start项的值修由00000004改为“00000002”,有点作用。但结果不太理想。