代码-如何用VC读取注册表二进制值,比如ShutdownTime?求助~

问题描述

如何用VC读取注册表二进制值,比如ShutdownTime?求助~

用RegQueryValueEx读取数据,应该放在哪种数据类型中呢,求有效代码~
下面这段是自己的提取TypedURLsTime的代码。不知问题在哪。。
int main()
{
HKEY hKey;
DWORD lpType = REG_BINARY;
BYTE time[64];
DWORD timeSize = sizeof(time);
RegOpenKeyEx(HKEY_CURRENT_USER, "SoftwareMicrosoftInternet ExplorerTypedURLsTime", 0, KEY_ALL_ACCESS, &hKey);//打开键。
RegQueryValueEx(hKey, "url1", NULL, &lpType, (LPBYTE)time, &timeSize);//提取内容。
printf("%s", time);
system("pause");
}

解决方案

#include
#include
#include //调用FILIETIME等函数。
int main()
{
HKEY hKey;
DWORD lpType = REG_BINARY;
DWORD timeSize;
if (RegOpenKeyEx(HKEY_CURRENT_USER, "SoftwareMicrosoftInternet ExplorerTypedURLsTime", 0, KEY_ALL_ACCESS, &hKey) == 0)//打开键。
{
RegQueryValueEx(hKey, "url1", NULL, &lpType, NULL, &timeSize);
DWORD time = new DWORD[timeSize];
if (RegQueryValueEx(hKey, "url1", NULL, &lpType, (LPBYTE)time, &timeSize) == 0)
{
LONGLONG *t = (LONGLONG
)time;//强制类型转换将地址赋给LONGLONG型。
LONGLONG time1 = *t;//time1为注册表中存储的二进制时间。
FILETIME filetime;//filetime为UTC。
filetime.dwHighDateTime = time1 >> 32;//filetime的前半段。
filetime.dwLowDateTime = time1 & 0xffff;//filetime的后半段。
FILETIME localfiletime;//localfiletime为UTC+8。

FileTimeToLocalFileTime(&filetime, &localfiletime);
SYSTEMTIME systemtime;
FileTimeToSystemTime(&localfiletime, &systemtime);
printf("时间为:n%d年%d月%d日%d时%d分%d秒n", systemtime.wYear, systemtime.wMonth, systemtime.wDay, systemtime.wHour, systemtime.wMinute, systemtime.wSecond);
}
}
system("pause");
}

解决方案二:

判断一下返回值,看是不是执行成功了,返回0表示成功,其他值表示有错误。RegOpenKeyEx,RegQueryValueEx这两个的返回值都判断一下

解决方案三:

反正你读取出来的的数据就是byte数组,至于它们具体数据怎么组织的,你就需要知道这个key的定义了,或者自己摸索规律。

解决方案四:

http://stackoverflow.com/questions/3437367/regqueryvalueex-and-reg-binary

时间: 2024-11-03 08:33:36

代码-如何用VC读取注册表二进制值,比如ShutdownTime?求助~的相关文章

vc++-VC++ 读取注册表返回2的问题

问题描述 VC++ 读取注册表返回2的问题 我想读取一下DHCP的 IP地址,可是RegQueryValue返回来2的错误,请大侠帮我看看,是怎么回事?多谢了! int main(int argc, char* argv[]) { HKEY hTT; long lRet; //lRet=RegOpenKey(HKEY_LOCAL_MACHINE,"SYSTEMControlSet001ServicesTcpipParametersInterfaces{CF166061-CAE0-4198-923

python读取注册表中值的方法_python

在Python的标准库中,_winreg.pyd可以操作Windows的注册表,另外第三方的win32库封装了大量的Windows API,使用起来也很方便.不过这里介绍的是使用_winreg操作注册表,毕竟是Python自带的标准库,无需安装第三方库. 下面的例子是通过Python获取Windows XP下已经安装的补丁号.Windows的补丁号都在"HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Updates"下,通过循环下面所有的目录节点,如果找

C# 多线程读取注册表,加载至TreeView_C#教程

复制代码 代码如下: using System; using System.Drawing; using System.Windows.Forms; using System.Threading; using Microsoft.Win32; namespace 星空个性化助手 { public partial class Form1 : Form { private delegate void LoadTreeView左侧( TreeNode node );//声明委托类型 public Fo

js读取注册表的键值示例_javascript技巧

复制代码 代码如下: <span style="font-size:18px">try { var shell = new ActiveXObject("WScript.Shell"); --读取注册表 var key = shell.RegRead("HKEY_CURRENT_USER\\Software\\AC3Filter\\equalizer\\Linear scale\\eq_freq_0"); -- 删除注册表 shell

.Net 2.0 原汁原味读取注册表

注册表 在.Net 1.x当中,使用Microsoft.Win32.RegistryKey类的GetValue方法读取注册表数据时,其实数据都是经过"处理"的: 例如,某个字符串数据本来的值是%SystemRoot%\System32\IoLogMsg.dll但是用GetValue方法得到的数据却是C:\WINDOWS\System32\IoLogMsg.dll 也就是说,在读取注册表中的字符串时,系统会自作主张地替你展开环境变量. 这的确省去我们调用Environment.Expan

c++读取注册表详解

  1.读注册表 // 读取注册表 CString ReadRegisteTable(CString root,CString path, CString key) { HKEY hAppKey; LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path; LPCTSTR DATA_FILE_SUB_KEY=key; char szDataFile[80]; if(root=="HKEY_LOCAL_MACHINE") { if (ERROR_SUCCESS ==

Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法

原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据读取的值来写配置文件,按照常规的做法,写好了注册表搜索方法,但是在测试的时候,发现总是会将系统盘下的Program Files\xxx路径读取为Program Files (x86)\xxx,如下图所示: 之后测试了如果读取非系统盘下的此路径,不会出现这个问题. 但是这个路径一般情况下都是默认安装在

读取注册表根据Office版本获取数据库连接字段_Access

/// <summary> /// 读取注册表,根据Office版本获取数据库连接字段 /// </summary> /// <returns>数据库连接字段</returns> private string GetConnectionString() { string strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = "; RegistryKey

java读取注册表乱码问题

问题描述 用Java读取注册表时候,注册表的字段如果是中文的话会变成"?"号:....Stringkeys[]={"info"};Stringvalues[]={"中文"};Preferencesprefs=Preferences.userRoot().node("/library/fps");for(inti=0;i<keys.length;i++){prefs.put(keys[i],values[i]);}...