通过IGroupPolicyObject实现修改某个组策略

 修改自动播放功能
         HRESULT hr=S_OK;
	 ::CoInitialize(NULL);
	 IGroupPolicyObject* p = NULL;
	 /*hr = CoCreateInstance(CLSID_GroupPolicyObject, NULL,
	 CLSCTX_INPROC_SERVER, IID_IGroupPolicyObject,
	 (LPVOID*)&p);*/
	 hr = CoCreateInstance(CLSID_GroupPolicyObject, NULL, CLSCTX_ALL,IID_IGroupPolicyObject,(LPVOID*)&p);
	 log_error("CoCreateInstance = %d\n",GetLastError());
	 log_error("CoCreateInstance() failed 0x%08x\n", hr);
	 if (SUCCEEDED(hr))
	 {
		 DWORD dwSection = GPO_SECTION_USER;
		 HKEY hGPOSectionKey = NULL;
		 DWORD dwData;
		 HKEY hSettingKey;
		 LSTATUS rStatus;
		 DWORD lData = 255;
		 hr = 0;
		 //hr = p->OpenDSGPO( bGPOPath, GPO_OPEN_LOAD_REGISTRY);
		 hr = p->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);
		 hr = p->GetRegistryKey(dwSection, &hGPOSectionKey);
		 long returnnum = RegOpenKeyEx( hGPOSectionKey,
			 L"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0,
			 KEY_WRITE, &hSettingKey) ;
		 log_printf(" RegOpenKeyEx return num = %d\n",returnnum);
		 if(returnnum != ERROR_SUCCESS )
		 {
			 rStatus = RegCreateKeyEx(
				 hGPOSectionKey,
				 L"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
				 0,
				 NULL,
				 REG_OPTION_NON_VOLATILE,
				 KEY_WRITE,
				 NULL,
				 &hSettingKey,
				 NULL );
		 }
		 rStatus = RegSetValueEx(hSettingKey, L"NoDriveTypeAutoRun",
			 NULL, REG_DWORD, (BYTE *)(&lData),
			 sizeof(DWORD));
		 rStatus = RegCloseKey(hSettingKey);
		 GUID RegistryId = REGISTRY_EXTENSION_GUID;
		 GUID ThisAdminToolGuid =
		 {
			 0x0F6B957E,
			 0x509E,
			 0x11D1,
			 {0xA7, 0xCC, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xE3}
		 };
		 rStatus = RegCloseKey(hGPOSectionKey);
		 hr = p->Save(
			 FALSE,
			 TRUE,
			 &RegistryId,
			 &ThisAdminToolGuid );
		 CoUninitialize();
		 hr = p->Release();
	 }

	 hr=S_OK;
	 ::CoInitialize(NULL);
	 p = NULL;
	 /*hr = CoCreateInstance(CLSID_GroupPolicyObject, NULL,
	 CLSCTX_INPROC_SERVER, IID_IGroupPolicyObject,
	 (LPVOID*)&p);*/
	 hr = CoCreateInstance(CLSID_GroupPolicyObject, NULL, CLSCTX_ALL,IID_IGroupPolicyObject,(LPVOID*)&p);
	 log_error("CoCreateInstance = %d\n",GetLastError());
	 log_error("CoCreateInstance() failed 0x%08x\n", hr);
	 if (SUCCEEDED(hr))
	 {
		 DWORD dwSection = GPO_SECTION_MACHINE;
		 HKEY hGPOSectionKey = NULL;
		 DWORD dwData;
		 HKEY hSettingKey;
		 LSTATUS rStatus;
		 DWORD lData = 255;
		 hr = 0;
		 //hr = p->OpenDSGPO( bGPOPath, GPO_OPEN_LOAD_REGISTRY);
		 hr = p->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY);
		 log_printf("p->OpenLocalMachineGPO(GPO_OPEN_LOAD_REGISTRY) = %d",hr);
		 hr = p->GetRegistryKey(dwSection, &hGPOSectionKey);
		 log_printf("p->GetRegistryKey(dwSection, &hGPOSectionKey) = %d",hr);
		 long returnnum = RegOpenKeyEx( hGPOSectionKey,
			 L"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", 0,
			 KEY_WRITE, &hSettingKey) ;
		 log_printf(" RegOpenKeyEx return num = %d\n",returnnum);
		 if(returnnum != ERROR_SUCCESS )
		 {
			 rStatus = RegCreateKeyEx(
				 hGPOSectionKey,
				 L"Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
				 0,
				 NULL,
				 REG_OPTION_NON_VOLATILE,
				 KEY_WRITE,
				 NULL,
				 &hSettingKey,
				 NULL );
			 log_printf("RegCreateKeyEx return num = %d\n",rStatus);
		 }
		 rStatus = RegSetValueEx(hSettingKey, L"NoDriveTypeAutoRun",
			 NULL, REG_DWORD, (BYTE *)(&lData),
			 sizeof(DWORD));
		 log_printf("RegSetValueEx NoDriveTypeAutoRun return num = %d\n",rStatus);
		 rStatus = RegCloseKey(hSettingKey);
		 GUID RegistryId = REGISTRY_EXTENSION_GUID;
		 GUID ThisAdminToolGuid =
		 {
			 0x0F6B957E,
			 0x509E,
			 0x11D1,
			 {0xA7, 0xCC, 0x00, 0x00, 0xF8, 0x75, 0x71, 0xE3}
		 };
		 rStatus = RegCloseKey(hGPOSectionKey);
		 hr = p->Save(
			 TRUE,
			 TRUE,
			 &RegistryId,
			 &ThisAdminToolGuid );
		  log_printf("Save return num = %d\n",hr);
		 CoUninitialize();
		 hr = p->Release();
	 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值