Autor Thema: CLASS.SysInfo  (Gelesen 3379 mal)

Offline feargus

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
  • Und welche Farbe soll die Datenbank haben?
CLASS.SysInfo
« am: 20.06.02 - 14:27:38 »
Ich hoffe das einer von euch noch irgenwo einen Windows ME rechner hat.
Die SysInfo Class hat noch einige Schwachstellen, welche ich versuche auszubessern.
Bsp: bei der Systemversion erscheint Windows 2000 obwohl WinXP installiert ist.
Die Seriennummer des PC's ist noch nicht auslesbar. Bei einigen Geräten ist dies allerdings Möglich (Compaq, IBM)
(Hat dazu jemand den passenden Api aufruf ?)
Die Festplatten Serien Nummer ist (zumindestens bei SCSI Platten) falsch.


Abfrage Windows NT basierend oder nicht..
 registryGetKey(HKEY_LOCAL_MACHINE,"SYSTEM\CurrentControlSet\Control\Session Manager\Environment","OS")
    ="Windows_NT" (winNT,win2000,WinXP)
    =! Windows 98 Se,Windows 98,Windows 95  = KEY NICHT VORHANDEN
       Windows ME ???

Abfrage nach der Version
registryGetKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","ProductName")
  = (bsp Microsoft Windows XP)
bzw für win9x
 registryGetKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion","Version")


ServicePack
 registryGetKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","CSDVersion")
 (Windows NT basierend)
 Wie ist die abfrage für Win9x / WinME

registryGetKey(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows NT\CurrentVersion","CurrentVersion")
 = (Maijor,Minor Version - 5.1 bei XP)
 (Windows NT basierend)
 Wie ist die abfrage für Win9x / WinME




Codebeispiel
# Declare
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (Byval hkey As Long, Byval lpSubKey As String, Byval ulOptions As Long, Byval samDesired As Long, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (Byval hkey As Long, Byval lpValueName As String, Byval lpReserved As Long, lpType As Long, Byval lpData As String, lpcbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (Byval hkey As Long) As Long
Dim hKey As Long, result As Long, length As Long
Dim sValue As String, sReturn As String,sStartImport As String, sStartExport As String,sStartReady As String

# Options
Option Public
Const HKEY_LOCAL_MACHINE = &H80000002
Const SYNCHRONIZE = &H100000
Const STANDARD_RIGHTS_READ = &H20000
Const KEY_QUERY_VALUE = &H1
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const ERROR_SUCCESS = 0&
Const REG_SZ = 1

function registryGetKey(hkey As Long,KeyName As String,KeyEntry As String)
     ' open the key
    result=RegOpenKeyEx(HKEY, KeyName, 0, KEY_READ, hKey)
    If result <> ERROR_SUCCESS Then
         ErrorValue%=1
         Goto eventHandle
    Else
         sValue=Space$(128)
         length=128
         
         ' query the value of the key
         result=RegQueryValueEx(hKey,KeyEntry, 0, REG_SZ, sValue, length)
         
         ' display it
         If result = ERROR_SUCCESS Then
              REM Messagebox Left$(sValue, length)
              sReturn=""
              For anz=1 To length
                   If Asc(Mid$(sValue,anz,1))>0 Then
                        sReturn=sReturn+Mid$(sValue,anz,1)      
                   End If                        
                   
              Next
         End If
         
         ' close the key
         Call RegCloseKey(hKey)  
    End If
    registryGetKey=sReturn
    Exit Sub
eventHandle:
    If ErrorValue%=1 Then
         Message="Can't open key"
    Elseif ErrorValue%=2 Then
         Message=Left$(sValue, length)
    End If
   
   
End Sub
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
2 x 6.5.5 Mail Server on Windos 2003
2 x 6.5.5 Application Server on Windos 2003

Clients:
500 User (Win.XP) 6.5.5

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: CLASS.SysInfo
« Antwort #1 am: 24.06.02 - 15:03:09 »
Hallo,

wie wäre es, wenn Du einfach ein Feld anlegst, das beim Anlegen berechnet wird mit der Formel "@Platform([Specific])"?

Ich kenn nur die Rückgabe-Werte für WIN NT und Nachfahren:

4.0 ---> Win NT 4.0
5.0 ---> Win 2000
5.1 ---> Win XP

Hilft Dir das weiter?

Gruß
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline feargus

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
  • Und welche Farbe soll die Datenbank haben?
Re: CLASS.SysInfo
« Antwort #2 am: 25.06.02 - 07:47:16 »
der Befehl geht leider nicht unter Notes4... :(
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
2 x 6.5.5 Mail Server on Windos 2003
2 x 6.5.5 Application Server on Windos 2003

Clients:
500 User (Win.XP) 6.5.5

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: CLASS.SysInfo
« Antwort #3 am: 25.06.02 - 09:22:11 »
Bist Du sicher?

Bei mir funktioniert es auch unter Notes 4.6!
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline feargus

  • Aktives Mitglied
  • ***
  • Beiträge: 144
  • Geschlecht: Männlich
  • Und welche Farbe soll die Datenbank haben?
Re: CLASS.SysInfo
« Antwort #4 am: 26.06.02 - 10:43:21 »
4.6.5... und es geht leider nicht...

jedoch habe ich dank der Minor Version Ekoni's Class erweitern können :)
(jetzt fehlt nur noch Windows ME
Select Case OS.dwPlatformId
         Case 1
              Select Case OS.dwMajorVersion
              Case 0: tmp = "Windows 95"
              Case 10: tmp = "Windows 98"
              End Select
         Case 2
              Select Case OS.dwMajorVersion
              Case 3: tmp = "Windows NT 3.51"
              Case 4: tmp = "Windows NT 4.0"
              Case 5 :

                   Select Case os.dwMinorVersion
                   Case 0: tmp = "Windows 2000"
                   Case 1: tmp = "Windows XP"
                   End Select

              End Select
             
         Case Else
              tmp = "unknown"
         End Select
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
2 x 6.5.5 Mail Server on Windos 2003
2 x 6.5.5 Application Server on Windos 2003

Clients:
500 User (Win.XP) 6.5.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz