Wersja windowsa (vista czy 2008 serwer)

0

Witam wszystkich,
natrafiłem na dość ciekawy problem, mianowicie chciałbym w aplikacji wyświetlić wersje systemu na którym jest uruchomiona. Dzięki google znalazłem wiele przydatnych informacji na ten temat (głównie korzystające z GetVersionEx Function), problem w tym że (może coś źle czytam) nadal nie wiem jak odróżnić od siebie Windows Server 2008 i Windows Vista.
Byłbym wdzięczny za wszelką pomoc.
Pozdrawiam

0

Z tego co widzę, to Vista ma build 6000, a WHS ma build 6001. A w serwisie jest kod na wykrywanie wersji Windowsa - dopisać Vistę i WHS i masz :)

//a to przepraszam, o przypadku SP1 do Visty nie pomyślałem...

0

hmm
a mógłbyś sprecyzować gdzie widzisz te buildy?
Bo przynajmniej z tego co znalazlem na wikipedi:
Vista: Current version: 6.0 Service Pack 1 (SP1) (Build 6001)
Serwer: Current version: 6.0 (Build 6001)

0

Vista RTM ma build 6000 - Vista SP1 ma też build 6001, dokładnie tak samo jak Windows Server 2008 - bo mają wspólne jądro. WHS (Windows Home Server) to chyba w ogóle nie ma jądra z serii 6.0, nie wiem dokładnie ;-)

A tutaj masz przykład który rozróżnia WS2008 i Windows Vista:
http://msdn2.microsoft.com/en-us/library/ms724429(VS.85).aspx

Wystarczy dodatkowo sprawdzać jedną rzecz:

if ( osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0 )
      {
         if( osvi.wProductType == VER_NT_WORKSTATION )
             StringCchCat(pszOS, BUFSIZE, TEXT("Windows Vista "));
         else StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 " ));
0

Troche sie rozjaśnia, niestety problem nadal istnieje.
Pisze na podstawie "Jak sprawdzić wersję Windows za pomocą funkcji GetVersionEx" (z delphi FAQ)
informacje są tam zbierane do osInfo (osInfo : _OSVERSIONINFOA;)
_OSVERSIONINFOA = record
dwOSVersionInfoSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformId: DWORD;
szCSDVersion: array[0..127] of AnsiChar; { Maintenance string for PSS usage }
end;

i niestety nie wiem w jaki sposób miałbym dobrać się do 'wProductType'

0

Ok, podszedłem do problemu z troche innej strony
w rejestrach (LOCAL_MACHINE->SOFTWARE->Microsoft->WindowsNT->CurrentVersion->ProductName) jest interesujący mnie wpis, wprawdzie nie mam możliwości sprawdzenia rejestrów na 2008 Serwer ale sądze że będzie tam odpowiedni wpis.

1 użytkowników online, w tym zalogowanych: 0, gości: 1