程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 代碼-如何用VC讀取注冊表二進制值,比如ShutdownTime?求助~

代碼-如何用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, "Software\Microsoft\Internet Explorer\TypedURLsTime", 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, "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");
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved