Windows API - RegEnumValue

  1 #include <windows.h>
  2 #include <stdio.h>
  3 #include <tchar.h>
  4
  5 #define MAX_KEY_LENGTH 255
  6 #define MAX_VALUE_NAME 16383
  7
  8 void QueryKey(HKEY hKey)
  9 {
 10     TCHAR    achKey[MAX_KEY_LENGTH];   // buffer for subkey name
 11     DWORD    cbName;                   // size of name string
 12     TCHAR    achClass[MAX_PATH] = TEXT("");  // buffer for class name
 13     DWORD    cchClassName = MAX_PATH;  // size of class string
 14     DWORD    cSubKeys=0;               // number of subkeys
 15     DWORD    cbMaxSubKey;              // longest subkey size
 16     DWORD    cchMaxClass;              // longest class string
 17     DWORD    cValues;              // number of values for key
 18     DWORD    cchMaxValue;          // longest value name
 19     DWORD    cbMaxValueData;       // longest value data
 20     DWORD    cbSecurityDescriptor; // size of security descriptor
 21     FILETIME ftLastWriteTime;      // last write time
 22
 23     DWORD i, retCode;
 24
 25     TCHAR  achValue[MAX_VALUE_NAME];
 26     DWORD cchValue = MAX_VALUE_NAME;
 27
 28     // Get the class name and the value count.
 29     retCode = RegQueryInfoKey(
 30         hKey,                    // key handle
 31         achClass,                // buffer for class name
 32         &cchClassName,           // size of class string
 33         NULL,                    // reserved
 34         &cSubKeys,               // number of subkeys
 35         &cbMaxSubKey,            // longest subkey size
 36         &cchMaxClass,            // longest class string
 37         &cValues,                // number of values for this key
 38         &cchMaxValue,            // longest value name
 39         &cbMaxValueData,         // longest value data
 40         &cbSecurityDescriptor,   // security descriptor
 41         &ftLastWriteTime);       // last write time
 42
 43     // Enumerate the subkeys, until RegEnumKeyEx fails.
 44
 45     if (cSubKeys)
 46     {
 47         printf( "\nNumber of subkeys: %d\n", cSubKeys);
 48
 49         for (i=0; i<cSubKeys; i++)
 50         {
 51             cbName = MAX_KEY_LENGTH;
 52             retCode = RegEnumKeyEx(hKey, i,
 53                      achKey,
 54                      &cbName,
 55                      NULL,
 56                      NULL,
 57                      NULL,
 58                      &ftLastWriteTime);
 59             if (retCode == ERROR_SUCCESS)
 60             {
 61                 _tprintf(TEXT("(%d) %s\n"), i+1, achKey);
 62             }
 63         }
 64     }
 65
 66     // Enumerate the key values.
 67
 68     if (cValues)
 69     {
 70         printf( "\nNumber of values: %d\n", cValues);
 71
 72         for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++)
 73         {
 74             cchValue = MAX_VALUE_NAME;
 75             achValue[0] = ‘\0‘;
 76             retCode = RegEnumValue(hKey, i,
 77                 achValue,
 78                 &cchValue,
 79                 NULL,
 80                 NULL,
 81                 NULL,
 82                 NULL);
 83
 84             if (retCode == ERROR_SUCCESS )
 85             {
 86                 _tprintf(TEXT("(%d) %s\n"), i+1, achValue);
 87             }
 88         }
 89     }
 90 }
 91
 92 //void __cdecl _tmain(void)
 93 //{
 94 //   HKEY hTestKey;
 95 //
 96 //   if( RegOpenKeyEx( HKEY_LOCAL_MACHINE,
 97 //        TEXT("SOFTWARE\\Autodesk"),
 98 //        0,
 99 //        KEY_READ,
100 //        &hTestKey) == ERROR_SUCCESS
101 //      )
102 //   {
103 //      QueryKey(hTestKey);
104 //   }
105 //
106 //   RegCloseKey(hTestKey);
107 //}
108
109 //int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
110 int main(){
111    HKEY hTestKey;
112
113    if( RegOpenKeyEx( HKEY_LOCAL_MACHINE,
114         TEXT("SOFTWARE\\Autodesk"),
115         0,
116         KEY_READ,
117         &hTestKey) == ERROR_SUCCESS
118       )
119    {
120       QueryKey(hTestKey);
121    }
122
123    RegCloseKey(hTestKey);
124 }
时间: 2024-10-19 17:49:00

Windows API - RegEnumValue的相关文章

Windows API 大全

常用Windows API1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDis

WINDOWS API函数说明

Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同一个网络资源的连接 WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个

Windows API 编程学习记录&lt;二&gt;

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录&lt;三&gt;

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

WinSpy涉及的windows api

WinSpy涉及的windows api WinSpy是仿造微软Spy++的开源项目,但只涉及Spy++的窗口句柄.窗口的属性.styles.类名子窗口.进程线程信息等查找功能.功能虽然不算强大,但涉及到很多windows api,是了解windows api的一个有用工具.WinSpy界面截图如下: 1:拖拽瞄准镜图标获取窗口的HWND 核心api:ClientToScreen.WindowFromPoint.EnumChildWindows.GetParent.GetWindowLong.S

Delphi Windows API判断文件共享锁定状态

一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定数据是否可读或可写,从而为开发出健壮的程序提供切实依据.   同样,在Windows中,文件可以共享模式打开,它也涉及到锁的操作问题.根据Windows中文件共享时加锁范围的大小,锁可分为全局锁和局部锁:全局锁以锁定文件全部内容为特征,而局部锁以锁定文件的局部内容为特征,且文件的锁定区域不可重复.根

Windows API所提供的功能可以归为七类

1.基础服务(Base Services),提供对Windows系统可用的基础资源的访问接口.比如象:文件系统(file system).外部设备(device).,进程(process).线程(thread)以及访问注册表(Windows registry)和错误处理机制(error handling).这些功能接口位于,16位Windows下的kernel.exe.krnl286.exe或krnl386.exe系统文档中:以及32位Windows下的 kernel32.dll和advapi3

Windows API的消息处理机制

上个学期找实习失利,让我觉得自己基础打得不够牢固,所以在华为实习的这三个月里,每天下班都在复习理论课的知识,顺便刷了一个月的 LeetCode.本来以为找工作是势在必得了,结果这个学期秋季校招的坑爹经历导致现在还没有拿到一家公司的 offer.华为实习一结束,回学校的第二天就去参加了 360 在广州的笔试,进了面试以后却又喜闻乐见地一面就被干掉了.再加上之前 milo yip 大大对我提的建议,思来想去,感觉还是自己的简历不够拿得出手.现在开始都没剩下几家想进的公司了,为了不失业只能提早为明年的

Windows API 教程(七) hook 钩子监听

Windows API 教程(七) hook 钩子监听 Posted on 2013-08-15 茵蒂克丝 如何创建一个窗口 手动创建窗口的流程 实际代码 安装钩子 (Install hook) 钩子简介 SetWindowsHookEx 函数 设置监听[键盘]消息 设置监听[鼠标]消息 如何创建一个窗口 另外一个再录的 Windows SDK教程 里面有讲到快捷创建窗口的方式,不过这样的话要分好几个文件,感觉有点混所以这里就用原始的方式创建一个窗口. 那么,为什么讲到 hook(钩子)的时候要