Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Erkennen ob Win7 oder XP

Begonnen von Stapi, Februar 26, 2014, 18:36:54

⏪ vorheriges - nächstes ⏩

Stapi

Hallo liebes Forum
Ich benötige eure Hilfe. In einer Access 2003 Datenbank wird beim Start ein Reg Wert umgeschrieben, mit folgendem Code.
Sub WriteRegistryDWORDValue_1()
  Dim objWSHShell As Object
  Set objWSHShell = CreateObject("WScript.Shell")
  objWSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}\Compatibility Flags", 0, "REG_DWORD"
  Set objWSHShell = Nothing
End Sub

Auf dem XP Rechner läuft diese Anwendung Problemlos, unter Win7 wird beim Aufruf von diesem Befehl die Datenbank geschlosen mit der "Meldung VBA Code fehlerhaft"
Wie ermittel ich nun sicher auf welchen System die Datenbank geöffnet wird. XP oder Win7? um die Zeile entsprechend Anpassen zu können
Könnt ihr mir helfen?
Vielen Dank für eure Rückmeldung.
Grüße aus dem schönen NRW
Stefan

bahasu

HI,

vielleicht hilft: http://www.office-loesung.de/ftopic525619_0_0_asc.php

Harald
Servus

daolix

#2
Hallo hier mal ne kurzversion, ist älter, kann sein das es ab grösser Win 8.1 nicht mehr funktioniert

[color=blue]Declare Function[/color]  GetVersion Lib "KERNEL32.DLL" () [color=blue]As Long[/color]
   
[color=blue]Type[/color] tl
    l [color=blue]As Long[/color]
[color=blue]End Type[/color]
[color=blue]Type[/color] tb
    ll [color=blue]As Byte[/color]  [size=8pt][color=green]'Major Version[/color][/size]
    lh [color=blue]As Byte[/color][size=8pt][color=green] 'Minor Version[/color][/size]
    hl [color=blue]As Byte[/color] [size=8pt][color=green]'Build[/color][/size]
    hh [color=blue]As Byte[/color]
[color=blue]End Type[/color]
[color=blue]Function[/color] DeineFunktion
   ....
    [color=blue]Dim[/color] l [color=blue]As[/color] tl
    [color=blue]Dim[/color] b [color=blue]As[/color] tb
    l.l = GetVersion
   [color=blue] LSet[/color] b = l
    [color=blue]Select Case[/color] b.ll
     [color=blue]Case[/color] 5
        'dein Code für 'Windows XP
     [color=blue]case[/color] 6
        'Dein Code für Win Vista, Win7
[color=blue]end select[/color]
....
[color=blue]End function[/color]


oder du verwendest WMI zu bestimmung der Winversion

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_OperatingSystem",,48)
For Each objItem in colItems
   Select Case Left(objItem.Version, 1)
    case 5
    case 6
end select
Next




Stapi

Hallo

Danke an @bahasu und @daolix das ist was ich gesucht habe. Wo bei mir die kurz Version von @daolix im Moment völlig ausreicht.
Grüße aus dem schönen NRW
Stefan