win2000下无法删除服务程序的问题

snaill 2007-01-05 11:11:09
同样的代码,在XP下可以正常运行

在Win2000下,
安装服务后卸载 没有问题
安装服务后运行服务再卸载 没有问题

安装服务后运行服务,停止服务,再卸载则出现服务已禁用,删除操作必须在重新启动后才能生效。
为什么?


...全文
571 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
LiChenYue 2007-01-07
奇怪!
  • 打赏
  • 举报
回复
mynamelj 2007-01-05
我也遇到过这样的问题,MSDN上也没有找到答案,估计是要删除注册表项才能彻底删除.
  • 打赏
  • 举报
回复
snaill 2007-01-05
尝试手工删除注册项,又发现新的问题

如果控制面板-〉管理工具-〉服务开着,安装,卸载在安装,就无法安装成功了,注册表也没有服务项,不知道有没有办法解决
  • 打赏
  • 举报
回复
wanglei051 2007-01-05
我用vc 6建的ATL SERVER没出现过这种情况,不知道有没有用,给你贴一点看看
inline HRESULT CServiceModule::UnregisterServer()
{
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
return hr;

// Remove service entries
UpdateRegistryFromResource(IDR_Service, FALSE);
// Remove service
Uninstall();
// Remove object entries
hr = CComModule::UnregisterServer(TRUE);
CoUninitialize();
// return S_OK;
return hr;
}
inline BOOL CServiceModule::Uninstall()
{
if (!IsInstalled())
return TRUE;

SC_HANDLE hSCM = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

if (hSCM == NULL)
{
// MessageBox(NULL, _T("Couldn't open service manager"), m_szServiceName, MB_OK);
return FALSE;
}

SC_HANDLE hService = ::OpenService(hSCM, SRV_SERVICENAME, SERVICE_STOP | DELETE);

if (hService == NULL)
{
::CloseServiceHandle(hSCM);
// MessageBox(NULL, _T("Couldn't open service"), m_szServiceName, MB_OK);
return FALSE;
}
SERVICE_STATUS status;
::ControlService(hService, SERVICE_CONTROL_STOP, &status);

BOOL bDelete = ::DeleteService(hService);
::CloseServiceHandle(hService);
::CloseServiceHandle(hSCM);

if (bDelete)
return TRUE;

// MessageBox(NULL, _T("Service could not be deleted"), m_szServiceName, MB_OK);
return FALSE;
}
  • 打赏
  • 举报
回复
相关推荐
发帖
ATL
加入

3231

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
申请成为版主
帖子事件
创建了帖子
2007-01-05 11:11
社区公告
暂无公告