社区
进程/线程/DLL
帖子详情
做系统服务管理程序遇到问题了,QueryServiceConfig()
etz2008
2008-11-21 10:49:49
做系统服务管理程序遇到问题了,QueryServiceConfig()
始终得不到服务程序的路径,大家看哈
...全文
502
11
打赏
收藏
做系统服务管理程序遇到问题了,QueryServiceConfig()
做系统服务管理程序遇到问题了,QueryServiceConfig() 始终得不到服务程序的路径,大家看哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一个印坊小生
2011-03-08
打赏
举报
回复
要学习。。
hrjdsht
2010-06-18
打赏
举报
回复
怎么看不到
liyu355
2010-03-16
打赏
举报
回复
QUERY_SERVICE_CONFIG *psevStatus = (QUERY_SERVICE_CONFIG *)malloc(MAX_PATH);
if (psevStatus == NULL)
return -1;
DWORD dwNeed =0;
DWORD dwInputLen = MAX_PATH;
if (!QueryServiceConfig(hardOpen, psevStatus, dwInputLen, &dwNeed))
{
free(psevStatus);
psevStatus = (QUERY_SERVICE_CONFIG *)malloc(dwNeed);
dwInputLen = dwNeed;
QueryServiceConfig(hardOpen, psevStatus, dwInputLen, &dwNeed);
}
if (psevStatus != NULL)
{
free(psevStatus);
psevStatus = NULL;
}
类似这样的,可能会更好点,不要使用最大值。因为内存分配给你了,就算你当时释放掉内存了,系统也是得不到你释放的内存的。能少分配,就少分配一些的好
bainan
2009-04-27
打赏
举报
回复
我也遇到这个问题,搜到了这里,问题也解决了!
sosochina
2009-04-13
打赏
举报
回复
哈呵,不错前段时间刚碰到这个问题
从零开始学代码
2009-02-03
打赏
举报
回复
学习了。签名留念!
cnzdgs
2008-11-22
打赏
举报
回复
QueryServiceConfig的参数也要跟着改成8*1024。
etz2008
2008-11-22
打赏
举报
回复
还是不对
其实理论上也没什么错的啊
etz2008
2008-11-22
打赏
举报
回复
嗯 好
谢谢哈!
对了
这个问题
弄得我办天没解决好呢
给分了
呵呵
cnzdgs
2008-11-21
打赏
举报
回复
QueryServiceConfig的缓冲区最大8KB,初始化时用new分配即可,最后记得delete。
LPQUERY_SERVICE_CONFIG ServicesInfo = (LPQUERY_SERVICE_CONFIG)new BYTE[8*1024];
etz2008
2008-11-21
打赏
举报
回复
void CServerMangerDlg::GetServerItem()
{
CRect rect;
m_Server.GetWindowRect(&rect);
m_Server.SetExtendedStyle(LVS_EX_FULLROWSELECT |LVS_EX_GRIDLINES );
int m_Width=rect.right-rect.left;
m_Width=(m_Width-20)/5;
m_Server.InsertColumn(0,"服务名称",LVCFMT_LEFT,m_Width,0);
m_Server.InsertColumn(1,"显示名称",LVCFMT_LEFT,m_Width,1);
m_Server.InsertColumn(2,"启动状态",LVCFMT_LEFT,m_Width,2);
m_Server.InsertColumn(3,"启动类型",LVCFMT_LEFT,m_Width,3);
m_Server.InsertColumn(4,"程序路径",LVCFMT_LEFT,m_Width,4);
SC_HANDLE scm;
if((scm=::OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS))==NULL)
{
MessageBox("OpenSCManager Error\n");
return;
}
LPENUM_SERVICE_STATUS lpServices= NULL; //定义
DWORD nSize = 0;
DWORD n;
DWORD nResumeHandle=0;
lpServices=(LPENUM_SERVICE_STATUS)LocalAlloc(LPTR, 64*1024);//分配内存
::EnumServicesStatus(scm,SERVICE_WIN32,SERVICE_STATE_ALL,lpServices,
64*1024,&nSize,&n,&nResumeHandle);
LPQUERY_SERVICE_CONFIG ServicesInfo = NULL;
UINT m_Current=m_Server.GetItemCount();
for(int i=0;i<n;i++)
{
SC_HANDLE service=NULL;
DWORD nResumeHandle=0;
m_Server.InsertItem(m_Current,lpServices[i].lpServiceName,0);
m_Server.SetItemText(m_Current,1,lpServices[i].lpDisplayName);
if(lpServices[i].ServiceStatus.dwCurrentState!=SERVICE_STOPPED)
m_Server.SetItemText(m_Current,2,"已启动");
else
m_Server.SetItemText(m_Current,2,"未启动");
CString str;
service=OpenService(scm,lpServices[i].lpServiceName,SERVICE_QUERY_CONFIG);
ServicesInfo=(LPQUERY_SERVICE_CONFIG)LocalAlloc(LPTR,64*1024); //注意分配足够的空间
if(!::QueryServiceConfig(service,ServicesInfo,64*1024,&nResumeHandle))
{ if(GetLastError()==ERROR_INVALID_HANDLE)
str.Format("%d==ERROR_INVALID_HANDLE",GetLastError());
MessageBox(str);
return; //枚举各个服务信息
}
if(SERVICE_AUTO_START==ServicesInfo->dwStartType) //启动方式
{
m_Server.SetItemText(m_Current,4,"自动");
}
if(SERVICE_DEMAND_START==ServicesInfo->dwStartType)
{
m_Server.SetItemText(m_Current,4,"手动");
}
if(SERVICE_DISABLED==ServicesInfo->dwStartType)
{
m_Server.SetItemText(m_Current,4,"禁止");
}
m_Server.SetItemText(m_Current,3,ServicesInfo->lpBinaryPathName);
CloseServiceHandle(service);
m_Current++;
}
CloseServiceHandle(scm);
}
源代码如上
Windows下的
服务
控制管理器(SCM)
一、概要
服务
管理器是用于管理
系统
服务
的管理工具。一般常用于windows
系统
,使用这个工具你可以启动、停止
服务
;设置
服务
是自动、手动启动或禁用;查看某个
服务
的相关信息;设置
服务
以什么用户启动等等(一般包括了超级管理员用户、管理员用户和游客用户);设置用户注销,软件等。
vc获取
系统
服务
信息(转)
对
系统
服务
的管理几乎是木马必不可少的功能了,比如神气儿,上兴远程控制等 要是能我们给自己的木马加上这个功能,看着也不赖。我们实现的效果如图3-4所示 图3 图4 好啦,现在开始干活 取得配置权限 在对
服务
进行管理设置前,需要以相应的权限打开
服务
,可通过下面两个API实现 SC_HANDLE OpenSCManager( LPCTSTR lp...
木马编程DIY之
系统
服务
木马编程DIY之
系统
服务
] 对
系统
服务
的管理几乎是木马必不可少的功能了,比如神气儿,上兴远程控制等 要是能我们给自己的木马加上这个功能,看着也不赖。我们实现的效果如图3-4所示 图3 图4 好啦,现在开始干活 取得配置权限 在对
服务
进行管理设置前,需要以相应的权限打开
服务
,可通过下面两个API实现
C# windows
服务
程序开机自启动exe程序
上述代码中我们给出了两种启动方式,两种启动方式的代码大同小异,推荐第一种方法,比较简洁。我们在OnStart方法中写下我们启动程序的执行逻辑,具体代码如下。首先是打开Visual Studio创建一个windos
服务
程序。详细创建windos
服务
程序不过多赘述,在另外一篇文章里有介绍【另外附上如何安装我们自己开发的Windows
服务
步骤。
Windows
服务
程序编写
摘要:几乎所有的操作
系统
在启动的时候都会启动一些不需要与用户交互的进程,这些进程在Windows中就被称作
服务
。它由
服务
程序、
服务
控制程序(SCP,
service
control program)和
服务
控制管理器(SCM,
service
control manager)三个组件构成。本文针对
服务
程序与
服务
控制程序的编写进行综合讲述。 关键词:Windows,
服务
,VC++ 1
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章