1。很多工具都是通过枚举注册表的x项来得到startup的,但还有没有别的方法吗?或者有朋友能贴段代码出来吗?2。枚举service的代码,有没有GUI形式的呢?

解决方案 »

  1.   

    注册表下的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    及HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion
    启动目录
      

  2.   

    枚举服务:
    #include <winsvc.h>
    void testSv()
    {
    SC_HANDLE hSCManager = NULL;
        hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
    int nRet = 0;
        if(hSCManager == NULL)
        {
            return ;
        }
    DWORD dwServicesReturned = 0;
        DWORD cbBytesNeeded = 0;
        DWORD cbBufSize = 0;
    nRet = EnumServicesStatus(hSCManager,SERVICE_WIN32,SERVICE_STATE_ALL,NULL,0,&cbBytesNeeded,&dwServicesReturned,0);
    ENUM_SERVICE_STATUS *lpServices = new ENUM_SERVICE_STATUS[cbBytesNeeded];
    cbBufSize = cbBytesNeeded;

        nRet = EnumServicesStatus(hSCManager,SERVICE_WIN32,SERVICE_STATE_ALL,lpServices,cbBufSize,&cbBytesNeeded,&dwServicesReturned,0);
        if(nRet == 0)
        {
            return;
        }
        if(lpServices == 0)
        {
            CloseServiceHandle(hSCManager);
            return;
        }
    for(DWORD i = 0; i < dwServicesReturned; i++, lpServices++)
    {
    cout << lpServices->lpDisplayName << endl;
    }
    CloseServiceHandle(hSCManager);
    }http://blog.csdn.net/trojanth/archive/2005/12/13/537518.aspx