PDA

Vollständige Version anzeigen : OS-Version ermitteln


stoni
05.11.2001, 14:55
Hallo zusammen,

Ich muß zum Ändern eines Wertes in der Registry die OS-Version (NT4 oder W2K) ermitteln, da der Wert in beiden Versionen in unterschiedlichen Schlüsseln steht.
Kann mir jemand sagen, wie ich das anstellen muß??

Danke schon mal!

Grüße
Stoni

Sascha Trowitzsch
05.11.2001, 16:25
Versuch folgenden Code:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetVersion <span class="TOKEN">Lib</span> "kernel32" () <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
<span class="TOKEN">Public</span> <span class="TOKEN">Declare</span> <span class="TOKEN">Function</span> GetVersionEx <span class="TOKEN">Lib</span> "kernel32" <span class="TOKEN">Alias</span> "GetVersionExA" _
(lpVersionInformation <span class="TOKEN">As</span> OSVERSIONINFO) <span class="TOKEN">As</span> <span class="TOKEN">Long</span>

<span class="TOKEN">Public</span> <span class="TOKEN">Type</span> OSVERSIONINFO
dwOSVersionInfoSize <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
dwMajorVersion <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
dwMinorVersion <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
dwBuildNumber <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
dwPlatformId <span class="TOKEN">As</span> <span class="TOKEN">Long</span>
szCSDVersion <span class="TOKEN">As</span> <span class="TOKEN">String</span> * 128
<span class="TOKEN">End</span> <span class="TOKEN">Type</span>

<span class="TOKEN">Function</span> WinVer() <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> lngWV <span class="TOKEN">As</span> Long, strVer <span class="TOKEN">As</span> <span class="TOKEN">String</span>
lngWV = GetVersion
<span class="TOKEN">If</span> (lngWV <span class="TOKEN">And</span> 2 ^ 15) = 0 <span class="TOKEN">Then</span> strVer = "NT" <span class="TOKEN">Else</span> strVer = "W9x"
strVer = strVer & Str((lngWV <span class="TOKEN">And</span> 255))
WinVer = strVer
<span class="TOKEN">End</span> <span class="TOKEN">Function</span>

<span class="TOKEN">Function</span> WinVerEx() <span class="TOKEN">As</span> <span class="TOKEN">String</span>
<span class="TOKEN">Dim</span> OS <span class="TOKEN">As</span> OSVERSIONINFO, i <span class="TOKEN">As</span> Long, strVer <span class="TOKEN">As</span> <span class="TOKEN">String</span>
OS.dwOSVersionInfoSize = 148
<span class="TOKEN">Call</span> GetVersionEx(OS)
Select Case OS.dwPlatformId
Case 2: strVer = "WinNT"
Case 1: strVer = "Win9x"
Case 0: strVer = "Win32s"
<span class="TOKEN">End</span> Select
strVer = strVer & " Version:" & Str(OS.dwMajorVersion) & "." & Trim(Str(OS.dwMinorVersion))
strVer = strVer & " Build:" & Str(OS.dwBuildNumber)
strVer = strVer & " SR: " & left(OS.szCSDVersion, InStr(1, OS.szCSDVersion, vbNullChar, vbTextCompare))
WinVerEx = strVer
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>

Ciao, Sascha

PS: Für deine Zwecke reicht der Aufruf WinVer

stoni
05.11.2001, 20:41
Hallo Sascha,

danke für deine Antwort.
Da ich (noch) mit A97 arbeite klappt der Aufruf: Public Type OSVERSIONINFO
nicht. Gibt es dafür eine Variante für A97

Danke!

Grüße
Stoni

A.S.
06.11.2001, 06:35
Hallo Stoni,

schau Dir doch einmal diesen Link bei Dev Asish an: http://www.mvps.org/access/api/api0055.htm

Gruß

Arno

Sascha Trowitzsch
06.11.2001, 11:03
@ Arno:
Das Ding von Dev A. tut doch das gleiche wie mein Code !?
@ stoni:
In A97 kann man doch auch eigene Typen deklarieren?

Aber wie gesagt, wenn du für deine Zwecke nur ermitteln musst, ob NT oder W2k, dann reduziert sich der Code auf:

Public Declare Function GetVersion Lib "kernel32" () As Long

if (GetVersion and 255)=5 then
.... '(=W2K)
else
.... '(=NT)
end if

Ciao, Sascha

A.S.
06.11.2001, 11:12
Hallo Sascha,

sorry, habe ich mir jetzt auf die Schnelle 'mal nicht genau angesehen. Dachte nur, da ja was zu fehlen schien, währe es einen Tip wert ;)

Gruß

Arno