我在注册表中找到了位置。
但是除了注册表外,应该有什么函数调用可以获得一个服务的具体资料吧?
请指教!
但是除了注册表外,应该有什么函数调用可以获得一个服务的具体资料吧?
请指教!
解决方案 »
- 关于C语言 做局域网聊天工具
- 谁来帮我看一小段代码?
- SetWindowsHookEx返回0,GetLastError也返回0 怎么回事
- 关于MFC8.0对消息映射宏的改进的问题
- 为什么用了SetPos()后Slider消失了
- [调查]您从事软开发工作多少年了?
- 奇怪,为什么我得到的时间总是早了8个小时呢?谢谢指教
- 在使用BindIoCompletionCallback进行IOCP开发是,如何指定CompletionKey?
- 怎样实现一个这样的临界区:a,b可同时访问资源S;a,c不可同时访问资源S;b,c不可同时访问资源S.
- 大家评评基本市面上最臭最烂的vc书
- 如何双击listctrl某项后弹出一对话框,(注意!主要是)让此对话框的static控件获取listctrl项的信息。谢谢各位了!
- 询问实时显示采集数据波形的编程思想(高分送上)
HANDLE m_handle=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
PROCESSENTRY32* Info = new PROCESSENTRY32;
CString ss;
Info->dwSize = sizeof(PROCESSENTRY32);
if(::Process32First(m_handle,Info))
{
while(::Process32Next(m_handle,Info)!=FALSE)
{
ss=Info->szExeFile;
ss.MakeLower();
if(ss.Find("程序名") != -1)
{
return Info->th32ProcessID;
}
}
::CloseHandle(m_handle);
if(Info)
{
delete Info;
}
}
......
DWORD filename;
filename=GetModuleFileName(Info->th32ModuleID,......);
......程序简单修改,就可以得到所有的当前运行的程序(当然包括服务)的文件
QueryServiceConfig
当然,你先得打开服务管理器,再打开服务。如果你搞服务端软件开发,这点应该没问题的。呵呵
然后可以queryserviceConfig获得详细信息,其中有你要的lpBinaryPathName。QueryServiceConfig
The QueryServiceConfig function retrieves the configuration parameters of the specified service. BOOL QueryServiceConfig(
SC_HANDLE hService, // handle of service
LPQUERY_SERVICE_CONFIG lpServiceConfig,
// address of service config. structure
DWORD cbBufSize, // size of service configuration buffer
LPDWORD pcbBytesNeeded // address of variable for bytes needed
);
typedef struct _QUERY_SERVICE_CONFIG { // qsc
DWORD dwServiceType;
DWORD dwStartType;
DWORD dwErrorControl;
LPTSTR lpBinaryPathName; // 这就是你要的值,
LPTSTR lpLoadOrderGroup;
DWORD dwTagId;
LPTSTR lpDependencies;
LPTSTR lpServiceStartName;
LPTSTR lpDisplayName;
} QUERY_SERVICE_CONFIG, LPQUERY_SERVICE_CONFIG;
IADsService
...
Requirements
Windows NT/2000 or later: Requires Windows 2000 or later (or Windows NT 4.0 SP6a or later with Active Directory Client Extension).
getmodulefilename()
根据文件名获取进程名
getmodulehandle()
详细请查msdn这两个函数都有参数