+BOOL JapaneseEra_IsFirstYearGannen(void)
+{
+#ifdef DONT_USE_REGISTRY
+ return TRUE;
+#else
+ HANDLE KeyHandle;
+ DWORD dwIndex;
+ WCHAR szName[32], szValue[32];
+ static BOOL s_bIsCached = FALSE, s_bFirstIsGannen = TRUE;
+
+ if (s_bIsCached)
+ return s_bFirstIsGannen;
+
+ KeyHandle = NLS_RegOpenKey(NULL, L"\\Registry\\Machine\\System\\"
+ L"CurrentControlSet\\Control\\Nls\\Calendars\\Japanese");
+ if (!KeyHandle)
+ return TRUE;
+
+ for (dwIndex = 0; dwIndex < 16; ++dwIndex)
+ {
+ if (!NLS_RegEnumValue(KeyHandle, dwIndex, szName, sizeof(szName),
+ szValue, sizeof(szValue)))
+ {
+ break;
+ }
+
+ if (lstrcmpiW(szName, L"InitialEraYear") == 0)
+ {
+ s_bFirstIsGannen = (szValue[0] == 0x5143);
+ s_bIsCached = TRUE;
+ break;
+ }
+ }
+
+ return s_bFirstIsGannen;
+#endif
+}
+