VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1962|回复: 3

[交流] VC操作组策略注册表实例:隐藏任务管理器 & 禁止屏保

[复制链接]
008
27_avatar_middle
online_vip 发表于 2016-6-22 11:18:22 | 显示全部楼层 |阅读模式
本帖最后由 weskill 于 2016-6-23 19:32 编辑

多抽出一分钟时间来学习,让你的生命更加精彩。

感谢VC驿站,在编写本实例时,参考了VC驿站的优秀帖子,尤其是

https://www.cctry.com/thread-50795-1-1.html
中 ccstd会员的指点:

“另外,所谓的组策略全部都是修改注册表,唯一要做的事情就是找个注册表监视工具来监视组策略编辑器是如何修改注册表项的。然后用VC操作注册表就行了……”

让我受益匪浅,因此写了一个通过操作注册表,达到修改组策略的目的的小软件,实现后组策略界面如下:分别是屏保和任务管理器的相应组策略被禁用。

VC操作组策略注册表实例:隐藏任务管理器 & 禁止屏保 VC操作组策略注册表实例:隐藏任务管理器 & 禁止屏保

项目代码相对简单,仅供参考。

头文件加上
#define   INITGUID
#include <Guiddef.h>
#include <Gpedit.h>

按钮1:禁用任务管理器

void CRWGPODlg::OnBnClickedButton1()
{
        ::CoInitialize(NULL);

        LRESULT status;  

               LRESULT hr=S_OK;  

               IGroupPolicyObject*pGPO=NULL;  //GPO组件接口 指针

               hr=CoCreateInstance(CLSID_GroupPolicyObject,NULL,CLSCTX_INPROC_SERVER,IID_IGroupPolicyObject,(LPVOID*)&pGPO);
        //创建 com组件

        if(hr==S_OK)  
    {  
                MessageBox(_T("GPO创建成功\n"));
                 
    }  
    else  
    {  
                MessageBox(_T("GPO创建失败\n"));
         
                            return;  
    }  


          DWORD dwSection=GPO_SECTION_USER;  //注册表的三个根域
                 HKEY hGPOKey=0;  
                 hr=pGPO->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);  //打开本地GPO
    if(SUCCEEDED(hr))  
    {  
                MessageBox(_T("打开本地机器成功\n"));
         
    }  
    else  
    {  
                MessageBox(_T("打开本地机器失败\n"));
        
        return;  
    }  


        hr=pGPO->GetRegistryKey(dwSection,&hGPOKey);
        //method retrieves a handle to the root of the registry key for the specified GPO section  GPO用户配置对应的注册表根健

    if(SUCCEEDED(hr))  
    {  
        
        MessageBox(_T("加载注册表成功\n"));
    }  
    else  
    {  
                MessageBox(_T("加载注册表失败\n"));
        return;  
    }  

        //禁用任务管理器  
         HKEY hKey=NULL;  
  
        status=RegOpenKeyEx(hGPOKey,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,  KEY_WRITE,&hKey);  //打开键值 得到的将要打开键的句柄存于hkey
        
                if(status!=ERROR_SUCCESS) // 0表示成功打开
        {  
            status=RegCreateKeyEx(hGPOKey,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey,NULL);

            if(status==S_OK)  
            {  
                MessageBox(_T("创建键值成功\n"));
            }  
            else  
            {  
                 MessageBox(_T("创建键值失败\n"));
                return;  
            }  
        }  

        DWORD lpData=1;  
        status=RegSetKeyValue(hKey,NULL,_T("DisableTaskMgr"),REG_DWORD,(LPCVOID)&lpData,4);  
        status = RegCloseKey(hKey);  
      
      
  
        GUID Registerid=REGISTRY_EXTENSION_GUID;  
        GUID ThisGuid={  
        0x0F6B957E,  
        0x509E,  
        0x11D1,  
        {0xA7, 0xCC, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xE3}  
    };  

    RegCloseKey(hGPOKey);  
  
    status=pGPO->Save(FALSE,TRUE,&Registerid,&ThisGuid);
    pGPO->Release();  
    ::CoUninitialize();  
        // TODO: 在此添加控件通知处理程序代码
}

按钮1:禁用屏保
void CRWGPODlg::OnBnClickedButton2()
{
        ::CoInitialize(NULL);

        LRESULT status;  

               LRESULT hr=S_OK;  

                IGroupPolicyObject*pGPO=NULL;  //GPO组件接口 指针

               hr=CoCreateInstance(CLSID_GroupPolicyObject,NULL,CLSCTX_INPROC_SERVER,IID_IGroupPolicyObject,(LPVOID*)&pGPO);
        //创建 com组件         

        if(hr==S_OK)  
    {  
                MessageBox(_T("GPO创建成功\n"));
                 
    }  
    else  
    {  
                MessageBox(_T("GPO创建失败\n"));
         
        return;  
    }  


        DWORD dwSection=GPO_SECTION_USER;  //注册表的三个根域
               HKEY hGPOKey=0;  
               hr=pGPO->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);  //打开本地GPO
    if(SUCCEEDED(hr))  
    {  
                MessageBox(_T("打开本地机器成功\n"));
         
    }  
    else  
    {  
                MessageBox(_T("打开本地机器失败\n"));
        
        return;  
    }  


        hr=pGPO->GetRegistryKey(dwSection,&hGPOKey);
        //method retrieves a handle to the root of the registry key for the specified GPO section  GPO用户配置对应的注册表根健

    if(SUCCEEDED(hr))  
    {  
        
                MessageBox(_T("加载注册表成功\n"));
    }  
    else  
    {  
        MessageBox(_T("加载注册表失败\n"));
        return;  
    }  

        //禁用屏保
       HKEY hKey=NULL;  
  
        status=RegOpenKeyEx(hGPOKey,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,  KEY_WRITE,&hKey);  //打开键值 得到的将要打开键的句柄存于hkey
        //ERROR_SUCCESS
                if(status!=ERROR_SUCCESS) // 0表示成功打开
        {  
            status=RegCreateKeyEx(hGPOKey,_T("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System"),0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&hKey,NULL);

            if(status==S_OK)  
            {  
                MessageBox(_T("创建键值成功\n"));
            }  
            else  
            {  
                 MessageBox(_T("创建键值失败\n"));
                return;  
            }  
        }  

        DWORD lpData=1;  
        status=RegSetKeyValue(hKey,NULL,_T("NoDispScrSavPage"),REG_DWORD,(LPCVOID)&lpData,4); //注意键值
        status = RegCloseKey(hKey);  
      
      
  
    GUID Registerid=REGISTRY_EXTENSION_GUID;  
    GUID ThisGuid={  
        0x0F6B957E,  
        0x509E,  
        0x11D1,  
        {0xA7, 0xCC, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xE3}  
    };  
    RegCloseKey(hGPOKey);  
  
    status=pGPO->Save(FALSE,TRUE,&Registerid,&ThisGuid);
    pGPO->Release();  
    ::CoUninitialize();  
        // TODO: 在此添加控件通知处理程序代码
}

评分

参与人数 1驿站币 +2 +3 收起 理由
51_avatar_small Syc + 2 + 3 赞一个!

查看全部评分





上一篇:PC微信客户端源代码分享
下一篇:Visual C++ 6.0网络及Internet开发指南(学习笔记)
95_avatar_middle
在线会员 发表于 2016-6-22 19:32:53 | 显示全部楼层
学习学习
51_avatar_middle
online_admins 发表于 2016-6-23 08:48:48 | 显示全部楼层
很不错啊,大家加油
27_avatar_middle
ico_lz  楼主| 发表于 2016-6-23 19:17:36 | 显示全部楼层
本帖最后由 weskill 于 2016-6-23 19:30 编辑

谢谢SYC老师推荐~~忘了说了,要添加相应的头文件:

#define   INITGUID
#include <Guiddef.h>
#include <Gpedit.h>
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-8-20 03:42

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表