注册表操作 HKEY_USERS

rainfull 2010-04-21 01:16:02
注册表的【HKEY_USERS】下的【S-1-5-21-1202660629-73586283-1644491937-500】每一个机器的这个都不一样,我想获得【Software】下面安装软件的一些信息,怎么做呀,现在难在第二个键上面。
...全文
433 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
尹成 2010-04-21
  • 打赏
  • 举报
回复
MSDN中RegEnumKeyEx的例子:


C/C++ code

--------------------------------------------------------------------------------// QueryKey - Enumerates the subkeys of key and its associated values.

// hKey - Key whose subkeys and values are to be enumerated.



#include <windows.h>

#include <stdio.h>

#include <tchar.h>



#define MAX_KEY_LENGTH 255

#define MAX_VALUE_NAME 16383



void QueryKey(HKEY hKey)

{

TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name

DWORD cbName; // size of name string

TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name

DWORD cchClassName = MAX_PATH; // size of class string

DWORD cSubKeys=0; // number of subkeys

DWORD cbMaxSubKey; // longest subkey size

DWORD cchMaxClass; // longest class string

DWORD cValues; // number of values for key

DWORD cchMaxValue; // longest value name

DWORD cbMaxValueData; // longest value data

DWORD cbSecurityDescriptor; // size of security descriptor

FILETIME ftLastWriteTime; // last write time



DWORD i, retCode;



TCHAR achValue[MAX_VALUE_NAME];

DWORD cchValue = MAX_VALUE_NAME;



// Get the class name and the value count.

retCode = RegQueryInfoKey(

hKey, // key handle

achClass, // buffer for class name

&cchClassName, // size of class string

NULL, // reserved

&cSubKeys, // number of subkeys

&cbMaxSubKey, // longest subkey size

&cchMaxClass, // longest class string

&cValues, // number of values for this key

&cchMaxValue, // longest value name

&cbMaxValueData, // longest value data

&cbSecurityDescriptor, // security descriptor

&ftLastWriteTime); // last write time



// Enumerate the subkeys, until RegEnumKeyEx fails.



if (cSubKeys)

{

printf( "\nNumber of subkeys: %d\n", cSubKeys);



for (i=0; i<cSubKeys; i++)

{

cbName = MAX_KEY_LENGTH;

retCode = RegEnumKeyEx(hKey, i,

achKey,

&cbName,

NULL,

NULL,

NULL,

&ftLastWriteTime);

if (retCode == ERROR_SUCCESS)

{

_tprintf(TEXT("(%d) %s\n"), i+1, achKey);

}

}

}



// Enumerate the key values.



if (cValues)

{

printf( "\nNumber of values: %d\n", cValues);



for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++)

{

cchValue = MAX_VALUE_NAME;

achValue[0] = '\0';

retCode = RegEnumValue(hKey, i,

achValue,

&cchValue,

NULL,

NULL,

NULL,

NULL);



if (retCode == ERROR_SUCCESS )

{

_tprintf(TEXT("(%d) %s\n"), i+1, achValue);

}

}

}

}



void _tmain(void)

{

HKEY hTestKey;



if( RegOpenKeyEx( HKEY_CURRENT_USER,

TEXT("SOFTWARE\\Microsoft"),

0,

KEY_READ,

&hTestKey) == ERROR_SUCCESS

)

{

QueryKey(hTestKey);

}

}
rainfull 2010-04-21
  • 打赏
  • 举报
回复
能不能给个例子,我弄了半天了,没有出来。
zyq5945 2010-04-21
  • 打赏
  • 举报
回复
RegEnumKeyEx

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧