Here is a more accurate patch. This will correctly return the lastwritetime as an integer. I changed it to use the typemap to convert the FILETIME value to a time_t and then return it as a perl integer. *** Registry.xs.orig Fri May 09 16:41:22 2008 --- Registry.xs Thu Nov 29 00:28:01 2012 *************** *** 551,559 **** DWORD keybuffersz = TMPBUFSZ; char classbuffer[TMPBUFSZ]; DWORD classbuffersz = TMPBUFSZ; - FILETIME ft; LONG result = RegEnumKeyEx(hkey, idx, keybuffer, &keybuffersz, ! 0, classbuffer, &classbuffersz, &ft); /* supress unreferenced variable warning */ (void)subkey; (void)classname; --- 551,558 ---- DWORD keybuffersz = TMPBUFSZ; char classbuffer[TMPBUFSZ]; DWORD classbuffersz = TMPBUFSZ; LONG result = RegEnumKeyEx(hkey, idx, keybuffer, &keybuffersz, ! 0, classbuffer, &classbuffersz, &lastwritetime); /* supress unreferenced variable warning */ (void)subkey; (void)classname; *************** *** 565,571 **** RETVAL subkey if (RETVAL) { SETPV(2, keybuffer); } classname if (RETVAL) { SETPV(3, classbuffer); } ! lastwritetime if (RETVAL) { SETNV(4, ft2timet(&ft)); } bool RegEnumValue(hkey,idx,name,reserved,type,value) --- 564,570 ---- RETVAL subkey if (RETVAL) { SETPV(2, keybuffer); } classname if (RETVAL) { SETPV(3, classbuffer); } ! lastwritetime bool RegEnumValue(hkey,idx,name,reserved,type,value) *************** *** 778,784 **** FILETIME lastwritetime = NO_INIT CODE: char keyclass[TMPBUFSZ]; - FILETIME ft; LONG result; /* supress unreferenced variable warning */ (void)kclass; --- 777,782 ---- *************** *** 789,795 **** &numsubkeys, &maxsubkeylen, &maxclasslen, &numvalues, &maxvalnamelen, &maxvaldatalen, ! &secdesclen, &ft); RETVAL = SUCCESS(result); if (!RETVAL) SetLastError(result); --- 787,793 ---- &numsubkeys, &maxsubkeylen, &maxclasslen, &numvalues, &maxvalnamelen, &maxvaldatalen, ! &secdesclen, &lastwritetime); RETVAL = SUCCESS(result); if (!RETVAL) SetLastError(result); *************** *** 803,809 **** maxvalnamelen maxvaldatalen secdesclen ! lastwritetime if (RETVAL) { ft2timet(&ft); } bool --- 801,807 ---- maxvalnamelen maxvaldatalen secdesclen ! lastwritetime bool *** typemap.orig Wed Feb 13 19:59:25 2008 --- typemap Thu Nov 29 00:30:24 2012 *************** *** 2,7 **** --- 2,8 ---- REGSAM T_HANDLE HKEY T_HANDLE HANDLE T_HANDLE + FILETIME T_FILETIME ############################################################################# INPUT *************** *** 11,16 **** --- 12,20 ---- ############################################################################# OUTPUT + + T_FILETIME + sv_setiv($arg, ft2timet(&$var)); T_HANDLE sv_setiv($arg, PTR2IV($var));