#include "../../stdafx.h"
#include "../system_info.h"
-#include "current_version.h"
#include "windows.h"
return system_product_name;
}
-std::wstring os_description()
+std::wstring win_product_name()
{
- return win_product_name() + L" " + win_sp_version();
-}
+ std::wstring result = L"Unknown Windows Product Name.";
+ HKEY hkey;
+ DWORD dwType, dwSize;
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS)
+ {
+ wchar_t p_name_str[1024];
+ dwType = REG_SZ;
+ dwSize = sizeof(p_name_str);
-/*static std::map<std::wstring, std::wstring> enumerate_fonts()
-{
- std::map<std::wstring, std::wstring> result;
- const DWORD max_str_length = 32766;
+ if (RegQueryValueEx(hkey, TEXT("ProductName"), NULL, &dwType, (PBYTE)&p_name_str, &dwSize) == ERROR_SUCCESS)
+ result = p_name_str;
- HKEY hkey;
- if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"), 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS)
- {
- int index = 0;
- do
- {
- DWORD name_length = max_str_length;
- wchar_t name[max_str_length];
-
- DWORD value_length = max_str_length;
- wchar_t value[max_str_length];
-
- long code = RegEnumValueW(hkey, index, name, &name_length, NULL, NULL, (PBYTE)value, &value_length);
- if(code == ERROR_SUCCESS)
- {
- std::wstring name_str(name);
- name_str = name_str.substr(0, name_str.find_last_of(L' ')); //the font names are formated like this: "AGaramondPro-Italic (OpenType)". We need to strip away the '(OpenType)'-part
- result.insert(std::pair<std::wstring, std::wstring>(name_str, std::wstring(value)));
- }
- else if(code == ERROR_NO_MORE_ITEMS)
- break;
- }
- while(++index);
- //if(RegQueryValueEx(hkey, TEXT("SystemProductName"), NULL, &dwType, (PBYTE)&p_name_str, &dwSize) == ERROR_SUCCESS)
- // system_product_name = p_name_str;
-
RegCloseKey(hkey);
}
+ return result;
+}
+std::wstring win_sp_version()
+{
+ std::wstring result = L"";
+ HKEY hkey;
+ DWORD dwType, dwSize;
+ if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"), 0, KEY_QUERY_VALUE, &hkey) == ERROR_SUCCESS)
+ {
+ wchar_t csd_ver_str[1024];
+
+ dwType = REG_SZ;
+ dwSize = sizeof(csd_ver_str);
+
+ if (RegQueryValueEx(hkey, TEXT("CSDVersion"), NULL, &dwType, (PBYTE)&csd_ver_str, &dwSize) == ERROR_SUCCESS)
+ result = csd_ver_str;
+
+ RegCloseKey(hkey);
+ }
return result;
-}*/
+}
+
+std::wstring os_description()
+{
+ return win_product_name() + L" " + win_sp_version();
+}
}