#define PLUGIN_REG_BHO "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Browser Helper Objects"
#define PLUGIN_REG_EXTENSION "SOFTWARE\\Microsoft\\Internet Explorer\\Extensions"
#define PLUGIN_REG_TOOLBAR "SOFTWARE\\Microsoft\\Internet Explorer\\Toolbar"
#define PLUGIN_REG_ACTIVEX "Software\\Microsoft\\Windows\\CurrentVersion\\Ext\\Stats"
分别在这些注册表里读的 toobar activex 等类型插件,一切正常。
但是设置 启动也是正常 因为只要删除 HKEY_USERS/.....Software\\Microsoft\\Windows\\CurrentVersion\\Ext\\Settings里面的那一个项CLSID就可以了
但是 设置禁止的时候 代码里 新建一个对应的 CLSID 到 HKEY_USERS/.....Software\\Microsoft\\Windows\\CurrentVersion\\Ext\\Settings
version :* flags:1 但是不起作用, 如果手动把version删了 再建, 就可以起作用了 为什么? 我代码应该怎么实现? 我对应着用代码 删一次 新建一次 还是不行!
else
//禁用插件
{
swprintf(szKeyName, L"%s\\%s", szPluginSetting, A2T(szCLSID));
dwRes = RegOpenKeyEx(HKEY_USERS, szKeyName, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKey);
if (ERROR_SUCCESS != dwRes)
{
dwRes = RegCreateKeyEx(HKEY_USERS, szKeyName, 0, NULL, 0, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hKey, &dwDisposition);
}
if (ERROR_SUCCESS != dwRes)
{
m_ILogMgr->WriteLog(m_ILogMgr->levelDEBUG, "directop", "[%s] RegOpenKeyEx|RegCreateKeyEx fail.Key:%s.Error code:%d",
__FUNCTION__, szKeyName, GetLastError());
return false;
}
dwData = 1;
dwRes = RegSetValueEx(hKey, L"Version", 0, REG_SZ, (LPBYTE)"*", 1);
dwRes = RegSetValueEx(hKey, L"Flags", 0, REG_DWORD, (LPBYTE)&dwData, sizeof(DWORD));
//RegCloseKey(hKey);
dwRes = RegDeleteValue(hKey, L"Version");
Sleep(70);
if(dwRes == ERROR_SUCCESS)
dwRes = RegSetValueEx(hKey, L"Version", 0, REG_SZ, (LPBYTE)"*", 1);
return ((dwRes == ERROR_SUCCESS) ? true : false);
}