]> git.sesse.net Git - casparcg/blobdiff - common/os/windows/system_info.cpp
Enabled TCP keep alive on TCP connections to clients. This might help in discovering...
[casparcg] / common / os / windows / system_info.cpp
index d87b72a65067e2497f37be64249df4cd91d10e0f..772d873f6ebbbe205d2aa85e6d4a4e52c503af8d 100644 (file)
@@ -22,7 +22,6 @@
 #include "../../stdafx.h"
 
 #include "../system_info.h"
-#include "current_version.h"
 
 #include "windows.h"
 
@@ -81,47 +80,49 @@ std::wstring system_product_name()
        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();
+}
 
 }