最近有遇到一个问题,要在一个编辑框中显示系统的时区信息,如
开始想用api GetTimeZoneInformation来解决这个问题,后来没能搞定。
最后是通过读注册表里的
SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\China Standard Time 中的Display来实现的。
下面分享一下这段代码:
// 打开注册表
HKEY hKey;
LPCWSTR path = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones\\China Standard Time";
if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, path, 0, KEY_READ, &hKey))
{
// 查询名称为Display的数据串的值,从而获得当前时区的显示信息
DWORD dwType = REG_SZ;
DWORD dwSize = MAX_PATH;
TCHAR szBuffer[MAX_PATH] = {0};
LPCWSTR lpctKeyName = L"Display";
// 其中我想获取的字符串就存在szBuffer里。
LONG lRes = ::RegQueryValueEx(hKey, lpctKeyName, 0, &dwType, (LPBYTE)szBuffer, &dwSize);
// 关闭注册表
RegCloseKey(hKey);
}