我尝试用访问注册表的方式 获取了补丁,目录是这个 “HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\Windows\\CurrentVersion\\Component Based Servicing\\Packages” 但是 该目录下巨多 ,我应该如何筛选?
我对照了一下腾讯电脑管家的已安装补丁,有13个 ,我在命令行下 使用“systemInfo | find "KB"” 的到的是12个 (腾讯电脑管家多了一个KB2504637)
请问 应该怎么做?
struct SoftInfo softinfo;
HKEY RootKey; // 主键
LPCTSTR lpSubKey; // 子键名称
HKEY hkResult; // 将要打开键的句柄
HKEY hkRKey;
LONG lReturn; // 记录读取注册表是否成功
CString strBuffer;
CString strMidReg;
DWORD index = 0;
TCHAR szKeyName[255] = { 0 }; // 注册表项名称
TCHAR szBuffer[255] = { 0 };
DWORD dwKeyLen = 255;
DWORD dwNameLen = 255;
DWORD dwType = REG_BINARY | REG_DWORD | REG_EXPAND_SZ | REG_MULTI_SZ | REG_NONE | REG_SZ;
RootKey = HKEY_LOCAL_MACHINE;
lpSubKey = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Component Based Servicing\\Packages";
//下面是打开注册表, 只有打开后才能做其他操作
//主键和子键共同组成了注册表中的目录
lReturn = RegOpenKeyEx(RootKey, lpSubKey, 0, KEY_WOW64_64KEY |KEY_ALL_ACCESS, &hkResult);
if (lReturn == ERROR_SUCCESS)
{
while (ERROR_NO_MORE_ITEMS != RegEnumKeyEx(hkResult, index, szKeyName, &dwKeyLen, 0, NULL, NULL, NULL))
{
index++;
strBuffer.Format(_T("%s"), szKeyName);
if (!strBuffer.IsEmpty())
{
strMidReg = (CString)lpSubKey + _T("\\") + strBuffer;
auto aa = RegOpenKeyEx(HKEY_LOCAL_MACHINE, strMidReg, 0, KEY_WOW64_64KEY | KEY_ALL_ACCESS, &hkRKey);
这是部分代码 下面的都是多余部分