*** win32ole.c~ Tue Sep 14 22:01:02 2010 --- win32ole.c Tue Oct 05 23:03:20 2010 *************** reg_get_val(HKEY hkey, const char *subke *** 2338,2343 **** --- 2338,2350 ---- err = RegQueryValueEx(hkey, subkey, NULL, &dwtype, pbuf, &size); if (err == ERROR_SUCCESS) { pbuf[size] = '\0'; + if (dwtype == REG_EXPAND_SZ) { + char* pbuf2 = pbuf; + DWORD len = ExpandEnvironmentStrings(pbuf2, NULL, 0); + pbuf = ALLOC_N(char, len + 1); + ExpandEnvironmentStrings(pbuf2, pbuf, len + 1); + free(pbuf2); + } val = rb_str_new2(pbuf); } free(pbuf);