「已注销」 2015-05-18 02:05 采纳率: 100%
浏览 2208
已采纳

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

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

  • 写回答

4条回答 默认 最新

  • 「已注销」 2015-05-22 07:11
    关注

    #include
    #include
    #include //调用FILIETIME等函数。
    int main()
    {
    HKEY hKey;
    DWORD lpType = REG_BINARY;
    DWORD timeSize;
    if (RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Internet Explorer\TypedURLsTime", 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");
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题