30 #ifdef HAVE_SYS_UTSNAME_H
31 # include <sys/utsname.h>
45 #if defined(HAVE_UNAME)
53 BOOL bOsVersionInfoEx;
54 BOOL bSomeError = FALSE;
61 #if defined(HAVE_UNAME)
63 config->
os_name = strdup(un.sysname);
69 ZeroMemory(&osvi,
sizeof(OSVERSIONINFOEX));
70 osvi.dwOSVersionInfoSize =
sizeof(OSVERSIONINFOEX);
71 if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) )
75 osvi.dwOSVersionInfoSize =
sizeof (OSVERSIONINFO);
76 if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) )
78 snprintf(sysname, 64,
"unknown");
84 switch (osvi.dwPlatformId)
86 case VER_PLATFORM_WIN32_NT:
88 if ( osvi.dwMajorVersion <= 4 )
89 snprintf(sysname, 64,
"Microsoft Windows NT");
91 if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0 )
92 snprintf(sysname, 64,
"Microsoft Windows 2000");
94 if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 )
95 snprintf(sysname, 64,
"Microsoft Windows XP");
99 if( bOsVersionInfoEx )
101 if ( osvi.wProductType == VER_NT_WORKSTATION )
103 if( osvi.wSuiteMask & VER_SUITE_PERSONAL )
104 snprintf(release, 64,
"Personal" );
106 snprintf(release, 64,
"Professional" );
109 else if ( osvi.wProductType == VER_NT_SERVER )
111 if( osvi.wSuiteMask & VER_SUITE_DATACENTER )
112 snprintf(release, 64,
"DataCenter Server" );
113 else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )
114 snprintf(release, 64,
"Advanced Server" );
116 snprintf(release, 64,
"Server" );
122 char szProductType[80];
125 RegOpenKeyEx( HKEY_LOCAL_MACHINE,
126 "SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
127 0, KEY_QUERY_VALUE, &hKey );
128 RegQueryValueEx( hKey,
"ProductType", NULL, NULL,
129 (LPBYTE) szProductType, &dwBufLen);
131 if ( lstrcmpi(
"WINNT", szProductType) == 0 )
132 snprintf(release, 64,
"Professional" );
133 if ( lstrcmpi(
"LANMANNT", szProductType) == 0 )
134 snprintf(release, 64,
"Server" );
135 if ( lstrcmpi(
"SERVERNT", szProductType) == 0 )
136 snprintf(release, 64,
"Advanced Server" );
140 case VER_PLATFORM_WIN32_WINDOWS:
142 if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
144 snprintf(sysname, 64,
"Microsoft Windows 95");
145 if ( osvi.szCSDVersion[1] ==
'C' || osvi.szCSDVersion[1] ==
'B' )
146 snprintf(release, 64,
"OSR2" );
149 if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
151 snprintf(sysname, 64,
"Microsoft Windows 98");
152 if ( osvi.szCSDVersion[1] ==
'A' )
153 snprintf(release, 64,
"SE" );
156 if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
158 snprintf(sysname, 64,
"Microsoft Windows Me");
162 case VER_PLATFORM_WIN32s:
164 snprintf(sysname, 64,
"Microsoft Win32s");
169 config->
os_name = strdup(sysname);
193 snprintf(buf, 256,
"%s", config->
os_name);
266 if(mod->
init)
return 0;