Hallo bin in VB ein Neuling
Ich habe mir auf arbeit eine kleine Access DB angelegt die wird mit Daten von den Rechnern im Netzt gefüllt... sprich ein kleines Inventarisierungstool.
Die meisten Daten werden über WMI ausgelesen so weit klappt das auch alles aber wenn ich die Software über wmi auslese bekomm ich nur einen Teil der installierten SW angezeigt also hab ich mir ein Paar Lösungen im Netz angesehen unter anderem eine wo man aus der Reg Werte auslesen kann.
Das klappt auch noch - VB liest mir aus der Reg die ganze installierte SW aus und schreibt Sie mir in eine Variable. Jetzt möchte ich diese Varibale aber filtern sprich ich möchte alle zip programme nur angezeigt bekommen ....
hat da jemand eine idee????
'Software auslesen
Function GetSWData
Dim strSW
software = ""
For Each strSW In GetAllActiveSWInReg
software = software & getsoftware(strsw) & "</p>"
Next
software = Left(software, Len(software)-1)
End Function
Function GetAllActiveSWInReg()
Dim arrResult(),i
Dim oWMIRegProvider
Dim strComputer
Dim arrDevice, strDevice
Dim arrPnPIds, strPnpID
Dim arrTMP, strTMP, strEDID
Const HKLM =&H80000002
Const strBaseKey = "Software\Microsoft\Windows\CurrentVersion\Uninstall\"
strComputer="."
i=0
ReDim arrResult(i)
Set oWMIRegProvider=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\default:StdRegProv")
oWMIRegProvider.EnumKey HKLM, strBaseKey, arrSubKeys
For Each strSubkey In arrSubKeys
intRet = oWMIRegProvider.GetstringValue (HKLM, strBaseKey & strSubKey, _
"DisplayName", strValue)
If intRet <> 0 Then
intRet = oWMIRegProvider.GetstringValue (HKLM, strBaseKey & strSubKey, _
"QuietDisplayName", strValue)
End If
If (strValue <> "") and (intRet = 0) Then
software = software & strValue &vbcrlf
End If
Next
GetSWData strValue, title
End Function und hier das einlesen in die db
' Schreibt die Daten in die Datenbank
Function UpdateDatabase
Dim db
Dim rs2
GetDebugLOG("--> UpdateDatabase")
Set db = CreateObject("adodb.connection")
db.Open "provider = microsoft.jet.oledb.4.0;data source = " & dbFile
Set rs2 = CreateObject ("ADODB.Recordset")
rs2.Locktype = 3
rs2.Cursortype = 1
rs2.Open "SELECT * FROM inventory", db
rs2.find "name='" & clientname & "'"
If rs2.EOF Then
' Eintrag wurde nicht gefunden, neu anlegen...
rs2.close
Set rs2 = CreateObject ("ADODB.Recordset")
rs2.Locktype = 3
rs2.Cursortype = 1
rs2.Open "SELECT * FROM inventory where id=-1", db
rs2.addNew
rs2.fields("name") = clientname
End If
' Diese Felder werden immer neu geschrieben...
rs2.fields("dvd") = dvd
rs2.fields("ip") = IPAddress
rs2.fields("subnet") = IPSubnet
rs2.fields("mac") = MACAdress
rs2.fields("software") = software
rs2.fields("ram") = ram_slot
rs2.fields("ram_complete") = ram_complete
rs2.fields("hdd") = hdd
rs2.fields("hdd_drives") = hdd_drives
rs2.fields("OS") = OS
rs2.fields("ServicePack") = OS_SP
rs2.fields("OS_SerialNumber") = OS_SerialNumber
rs2.fields("OS_CountryCode") = OS_CountryCode
rs2.fields("OS_RegistredUser") = OS_RegistredUser
rs2.fields("cpu") = cpu
rs2.fields("Computer_SN_WIN") = SN_Computer
rs2.fields("vga") = vga
rs2.fields("vga_ram") = vga_ram
rs2.fields("vga_res") = vga_res
rs2.fields("sound") = sound
rs2.fields("Computer_Manufactur") = sGetManufacturer
rs2.fields("Computer_Model") = sGetSystemModel
rs2.fields("Computer_SN_BIOS") = sGetSerialNumber
rs2.fields("Monitor_Manufactur") = strMonHersteller
rs2.fields("Monitor_Model") = strMonModel
rs2.fields("Monitor_Serial") = strMonSerial
rs2.fields("IE_Version") = sgetIEVersion
rs2.fields("last_inventory_log") = date & " - " & left(time,5)
'Neu seit 1.3.3
rs2.fields("username") = username
rs2.fields("Full_UserName") = Full_UserName
rs2.fields("GetChassisTypes") = ChassisTypes
rs2.update
End Function |