[GELÖST] swaudit zusätzlicher registry key auslesen und im Configed anzeigen
[GELÖST] swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hallo liebe OPSI gemeinde,
ich bin neu hier und bin gerade dabei mich mit OPSI anzufreunden. Ich habe zur Zeit einen config und einen depot server am laufen. Alles noch Testumgebungen. Was mich interessiert, ist es möglich das swaudit umzuschreiben damit dieser einen zusätzlichen registry-Key ausliest und ebenfalls im Configed unter Software-Inventur anzeigt?
Mir geht es um die Teamviewer ID, diese steht unter "HKLC/SOFTWARE/Wow6432Node/TeamViewer/ClientID".
Kann mir hier einer Tips oder Links geben wo ich das genauer nachlesen kann. Ich habe mir schon das Handbuch angesehen und die Rubrik opsi-winst ist hierbei auch hilfreich. Leider finde ich dort nichts wie ich die ausgelesenen informationen dann ich den Configed bekomme. Bin ich einfach nur Bertiebsblind oder suche ich nach den falschen Begriffen?
Danke euch im voraus für eure Hilfe.
ich bin neu hier und bin gerade dabei mich mit OPSI anzufreunden. Ich habe zur Zeit einen config und einen depot server am laufen. Alles noch Testumgebungen. Was mich interessiert, ist es möglich das swaudit umzuschreiben damit dieser einen zusätzlichen registry-Key ausliest und ebenfalls im Configed unter Software-Inventur anzeigt?
Mir geht es um die Teamviewer ID, diese steht unter "HKLC/SOFTWARE/Wow6432Node/TeamViewer/ClientID".
Kann mir hier einer Tips oder Links geben wo ich das genauer nachlesen kann. Ich habe mir schon das Handbuch angesehen und die Rubrik opsi-winst ist hierbei auch hilfreich. Leider finde ich dort nichts wie ich die ausgelesenen informationen dann ich den Configed bekomme. Bin ich einfach nur Bertiebsblind oder suche ich nach den falschen Begriffen?
Danke euch im voraus für eure Hilfe.
Zuletzt geändert von Lukas am 23 Nov 2015, 07:57, insgesamt 1-mal geändert.
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hallo,
das swaudit konzentriert sich momentan auf die maschinenweit installierten Produkte (HKLM).
HKLC sagt mir jetzt gar nichts. Ist das ein Benutzerspezifisher Teil?
Grundsätzlich könnte man swaudit anpassen, dass es auch in anderen Pfaden sucht.
Problematisch wird es bei den Teilen, die Benutzerspezifisch gesetzt sind - hier läuft opsi ja erstmal nicht im Kontext des jeweiligen Benutzers.
Für den Anfang würde ich vorschlagen das swaudit-Produkt auszupacken und dir das verwendete winst-script anzuschauen - da ist dann schon das Auslesen vorhanden und du siehst, wie die Daten zum Server übertragen werden.
Für die Sachen, die im Script dann unbekannt sind, empfehle ich das Handbuch.
Gruß
Niko
das swaudit konzentriert sich momentan auf die maschinenweit installierten Produkte (HKLM).
HKLC sagt mir jetzt gar nichts. Ist das ein Benutzerspezifisher Teil?
Grundsätzlich könnte man swaudit anpassen, dass es auch in anderen Pfaden sucht.
Problematisch wird es bei den Teilen, die Benutzerspezifisch gesetzt sind - hier läuft opsi ja erstmal nicht im Kontext des jeweiligen Benutzers.
Für den Anfang würde ich vorschlagen das swaudit-Produkt auszupacken und dir das verwendete winst-script anzuschauen - da ist dann schon das Auslesen vorhanden und du siehst, wie die Daten zum Server übertragen werden.
Für die Sachen, die im Script dann unbekannt sind, empfehle ich das Handbuch.
Gruß
Niko
Code: Alles auswählen
import OPSI
- SisterOfMercy
- Beiträge: 1556
- Registriert: 22 Jun 2012, 19:18
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
He probably means HKCU.n.wenselowski hat geschrieben:HKLC sagt mir jetzt gar nichts. Ist das ein Benutzerspezifisher Teil?
HKLC could stand for H_KEY_LOCAL_CUNTS, sort of all users in BOFH-language

Bitte schreiben Sie Deutsch, when I'm responding in the German-speaking part of the forum!
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hallo liebe OPSI gemeinde,
leider musste das Projekt OPSI lange ruhe.
Nun möchte ich aber entlich das System für den Produktiven einsatz vorbereiten.
Bis jetzt geht:
Ich habe es geschaft die swaudit4.ins so anzupassen das ein zusätzlicher Pfad auf der Reg ausgelesen wird. Dieser wird auch richtig in die Variable geschrieben, was ich mittels comment auch in der log von configed sehen kann. Ich habe auch die neue Variable der "softwareHashlist" beigefüht. Zur kontrolle habe ich die Variable von "version" gegen meine eingene getausche und sehen den korrekt ausgelesenen Reg-Wert im configed. Das schreiben der swaudit log aber ich ebenfalls zum testen aktiviert und die Variable wird dort auch korrekt der Hashliste angezeigt.
Nun zu meinen Fragen:
Ich habe mir die tabele "SOFTWARE" der mysql Datenbank "opsi" mittels select ausgeben lassen, hier finde ich aber keine neue Spalte mit meinen angaben. Wo und/oder wie lege ich dort eine eigene an? Hab ich etwas im winst Script übersehen? Wird die Spalte dann ohne änderungen im Configed angezeigt oder muss dort noch etwas geändert werden?
leider musste das Projekt OPSI lange ruhe.
Nun möchte ich aber entlich das System für den Produktiven einsatz vorbereiten.
Bis jetzt geht:
Ich habe es geschaft die swaudit4.ins so anzupassen das ein zusätzlicher Pfad auf der Reg ausgelesen wird. Dieser wird auch richtig in die Variable geschrieben, was ich mittels comment auch in der log von configed sehen kann. Ich habe auch die neue Variable der "softwareHashlist" beigefüht. Zur kontrolle habe ich die Variable von "version" gegen meine eingene getausche und sehen den korrekt ausgelesenen Reg-Wert im configed. Das schreiben der swaudit log aber ich ebenfalls zum testen aktiviert und die Variable wird dort auch korrekt der Hashliste angezeigt.
Nun zu meinen Fragen:
Ich habe mir die tabele "SOFTWARE" der mysql Datenbank "opsi" mittels select ausgeben lassen, hier finde ich aber keine neue Spalte mit meinen angaben. Wo und/oder wie lege ich dort eine eigene an? Hab ich etwas im winst Script übersehen? Wird die Spalte dann ohne änderungen im Configed angezeigt oder muss dort noch etwas geändert werden?
- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hallo Lukas,
Passende Methode dazu ist auditSoftwareOnClient_getHashes.
Hier Ausgabe aller Daten (das Filtern überlasse ich dem geneigten Leser als Übung
) auf der Kommandozeile
Wenn du einfach einen neuen Software-Eintrag in die Liste der gefundenen Software ergänzt, musst du nichts machen - sofern die Einträge so aufgebaut sind wie die bereits vorhandenen.
Gruß
Niko
Bitte mach dir (und uns) den Gefallen und verwenden die Schnittstellen zum Auslesen der Daten.Lukas hat geschrieben:Nun zu meinen Fragen:
Ich habe mir die tabele "SOFTWARE" der mysql Datenbank "opsi" mittels select ausgeben lassen, hier finde ich aber keine neue Spalte mit meinen angaben. Wo und/oder wie lege ich dort eine eigene an? Hab ich etwas im winst Script übersehen? Wird die Spalte dann ohne änderungen im Configed angezeigt oder muss dort noch etwas geändert werden?
Passende Methode dazu ist auditSoftwareOnClient_getHashes.
Hier Ausgabe aller Daten (das Filtern überlasse ich dem geneigten Leser als Übung

Code: Alles auswählen
$ opsi-admin -d method auditSoftwareOnClient_getObjects
Gruß
Niko
Code: Alles auswählen
import OPSI
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hallo Niko,
Ich habe mal die swaudit4.ins mit angehängt.
Hier habe ich zwei weitere Variablen deklariert, eine Variable mit den zusätzlichen Pfad in der Reg befüllt, die beiden Subs "sub_getswdetails4_32" und "sub_getswdetails4_64" angepasst, die zweite Variable mit in die comment aufgenommen und in die beiden Hashlists "softwareHashlist" und "softwareOnClientHashlist" meinen neuen Wert mit aufgenommen.
Im Log des Configed sehe ich die comment mit korrektem inhalt der Variable, nach umstellen des Loglevels wird der Hash ebenfalls im Log angezeigt, dort taucht ebenfalls alles korrekt auf. Ich sehe diese werte nur nicht unter "Software-Inventarisierung" im configed, warum?
Das werde ich so auch nicht einsetzten, es war ein schneller test ob hier überhaupt etwas passiert.Bitte mach dir (und uns) den Gefallen und verwenden die Schnittstellen zum Auslesen der Daten.

Ich habe mal die swaudit4.ins mit angehängt.
Hier habe ich zwei weitere Variablen deklariert, eine Variable mit den zusätzlichen Pfad in der Reg befüllt, die beiden Subs "sub_getswdetails4_32" und "sub_getswdetails4_64" angepasst, die zweite Variable mit in die comment aufgenommen und in die beiden Hashlists "softwareHashlist" und "softwareOnClientHashlist" meinen neuen Wert mit aufgenommen.
Im Log des Configed sehe ich die comment mit korrektem inhalt der Variable, nach umstellen des Loglevels wird der Hash ebenfalls im Log angezeigt, dort taucht ebenfalls alles korrekt auf. Ich sehe diese werte nur nicht unter "Software-Inventarisierung" im configed, warum?
Code: Alles auswählen
; Copyright (c) uib GmbH (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
[actions]
requiredWinstVersion >= "4.11.3.11"
ScriptErrorMessages = off
DefVar $Highloglevel$
DefVar $Midloglevel$
DefVar $Lowloglevel$
DefVar $ProductId$
DefVar $OpsiRegKey$
DefVar $uninstkey$
DefVar $extendedkey$
defVar $winSoftwareId$
defVar $displayVersion$
defVar $displayName$
defVar $uninstallString$
defVar $Language$
defVar $user$
defVar $pass$
defVar $serviceUrl$
DefVar $swAuditInfoStr$
DefVar $clientId$
DefVar $ident$
DefVar $name$
DefVar $version$
DefVar $subversion$
DefVar $architecture$
;DefVar $opsiVer$
DefVar $SysArchitecture$
DefVar $binaryName$
DefVar $Teamviewer$
DefVar $TVID$
DefVar $lastUsed$
DefVar $installSize$
DefVar $usageFrequency$
DefVar $langCodeHex$
DefVar $licenseKey$
DefVar $tmp$
DefVar $aktkey$
DefVar $extended_search$
DefVar $write2file$
DefVar $readfromfile$
DefVar $usefilebuffer$
DefVar $usekeyfinder$
DefVar $line$
DefVar $element$
DefVar $aktKeyVar$
DefStringlist $uninstKeys$
DefStringlist $resultlist$
DefStringList $singleHash$
DefStringList $softwareHashlist$
DefStringList $softwareOnClientHashlist$
DefStringList $SlowInfoMap$
DefStringList $VerInfoMap$
DefStringList $LicenseSections$
set $ProductId$ = "swaudit"
Set $OpsiRegKey$ = "HKLM\SOFTWARE\opsi.org"
Set $uninstkey$="HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall"
Set $Teamviewer$="HKEY_LOCAL_MACHINE\software\wow6432node"
Set $extendedkey$="HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\app management\arpcache"
set $clientId$="%HostID%"
set $extended_search$ = GetProductProperty("extended_search","off")
set $usefilebuffer$ = GetProductProperty("usefilebuffer","off")
set $usekeyfinder$ = GetProductProperty("usekeyfinder","on")
set $readfromfile$ = GetProductProperty("readfromfile","off")
set $Highloglevel$ = "6"
set $Midloglevel$ = "5"
set $Lowloglevel$ = "5"
;set $Highloglevel$ = "5"
;set $Midloglevel$ = "5"
;set $Lowloglevel$ = "6"
setloglevel = $Highloglevel$
Message "Running software audit..."
ShowBitmap "%SCRIPTPATH%\swaudit.png" "Software Inventarisierung"
if GetMsVersionInfo < "5.0"
logError "Installation aborted: wrong OS version: only win2k and above alowed"
isFatalError
endif
comment "detect if we run in opsi service mode"
if "%installingProdName%" = ""
comment " we running standalone"
set $write2file$ = "on"
else
comment " we run in opsi service mode"
set $write2file$ = "off"
endif
setloglevel = $Highloglevel$
if $readfromfile$ = "off"
if $usekeyfinder$ = "on"
message "collecting license keys ..."
Files_del_temp
Winbatch_start_keyfinder
set $LicenseSections$ = GetSectionNames("c:\opsi.org\tmp\swaudit_keys.ini")
endif
if GetSystemType = "64 Bit System"
message "collecting 64 Bit products ..."
set $uninstKeys$ = getRegistryKeyList64($uninstKey$)
message "collecting 64 Bit product details ..."
set $architecture$ = "x64"
set $subversion$ = ""
set $Language$ = ""
for %aktkey% in $uninstKeys$ do sub_getswdetails4_64
endif
message "collecting 32 Bit products ..."
set $uninstKeys$ = getRegistryKeyList32($uninstKey$)
setloglevel = $Highloglevel$
message "collecting 32 Bit product details ..."
set $architecture$ = "x86"
set $subversion$ = ""
set $Language$ = ""
for %aktkey% in $uninstKeys$ do sub_getswdetails4_32
setloglevel=$Highloglevel$
message "collecting os details ..."
sub_get_windows_info
sub_create_hash4
setloglevel=$Highloglevel$
if GetMsVersionInfo >= "6"
message "collecting hotfixes ..."
sub_get_nt6_hotfix_info
setloglevel = $Highloglevel$
endif
else
comment "read from file - only for debugging"
setloglevel=7
set $softwareHashlist$ = loadUnicodeTextFile("c:\opsi.org\tmp\auditsoftware_%PCName%.txt")
set $softwareOnClientHashlist$ = loadUnicodeTextFile("c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt")
endif
if $write2file$ = "on"
message "writing results back to file ..."
Files_del_old
for %s% in $softwareHashlist$ do sub_build_auditsoftware
for %s% in $softwareOnClientHashlist$ do sub_build_auditSoftwareOnClient
else
message "writing results back to service ..."
if $usefilebuffer$ = "on"
Files_del_old
for %s% in $softwareHashlist$ do sub_build_auditsoftware
for %s% in $softwareOnClientHashlist$ do sub_build_auditSoftwareOnClient
set $softwareHashlist$ = loadTextFile("c:\opsi.org\tmp\auditsoftware_%PCName%.txt")
set $softwareOnClientHashlist$ = loadTextFile("c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt")
endif
setloglevel = 8
markErrorNumber
opsiservicecall_auditSoftwareOnClient_setObsolete
if errorsOccuredSinceMark > 0
isFatalError
endif
OpsiServiceHashList_auditSoftware_createObjects
if errorsOccuredSinceMark > 0
isFatalError
endif
OpsiServiceHashList_auditSoftwareOnClient_createObjects
if errorsOccuredSinceMark > 0
isFatalError
endif
endif
Files_del_temp
[sub_getswdetails4_32]
setloglevel=$Midloglevel$
comment "handling if key contains quotation marks"
set $aktKeyVar$ = EscapeString: %aktkey%
if not ($aktKeyVar$ = "")
set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $binaryName$ = ""
set $TVID$ = ""
set $lastUsed$ = ""
set $Language$ = ""
set $winSoftwareId$ = $aktKeyVar$
if not ($winSoftwareId$ = "")
set $displayVersion$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] DisplayVersion")
set $displayName$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] displayName")
set $binaryName$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
set $TVID$ = GetRegistrystringvalue32("["+$Teamviewer$+"\"+$aktKeyVar$+"] ClientID")
set $uninstallString$ = GetRegistrystringvalue32("["+$uninstKey$+"\"+$aktKeyVar$+"] uninstallString")
set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")
set $binaryName$ = GetRegistrystringvalue ("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
if not($binaryName$ = "")
if FileExists($binaryName$)
set $VerInfoMap$ = getFileInfoMap($binaryName$)
set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
set $Language$ = LangCodeByHex($langCodeHex$)
endif
endif
if $extended_search$ = "on"
set $SlowInfoMap$ = GetSlowInfoMap($winSoftwareId$,"on")
if count($SlowInfoMap$) > "0"
set $binaryName$ = getValue("binaryName",$SlowInfoMap$)
if ($binaryName$ = "") or ($binaryName$ = "NULL")
set $binaryName$ = ""
endif
set $installSize$ = getValue("installSize",$SlowInfoMap$)
if ($installSize$ = "") or ($installSize$ = "NULL")
set $installSize$ = "0"
endif
set $lastUsed$ = getValue("lastUsed",$SlowInfoMap$)
if ($lastUsed$ = "") or ($lastUsed$ = "NULL")
set $lastUsed$ = ""
endif
set $usageFrequency$ = getValue("usageFrequency",$SlowInfoMap$)
if ($usageFrequency$ = "") or ($usageFrequency$ = "NULL")
set $usageFrequency$ = "0"
endif
if not(($binaryName$ = "") or ($binaryName$ = "NULL"))
if FileExists($binaryName$)
set $VerInfoMap$ = getFileInfoMap($binaryName$)
set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
set $Language$ = LangCodeByHex($langCodeHex$)
endif
endif
endif
endif
sub_create_hash4
endif
endif
[sub_getswdetails4_64]
setloglevel=$Midloglevel$
comment "handling if key contains quotation marks"
set $aktKeyVar$ = EscapeString: %aktkey%
if not ($aktKeyVar$ = "")
set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $lastUsed$ = ""
set $binaryName$ = ""
set $Language$ = ""
set $winSoftwareId$ = $aktKeyVar$
if not ($winSoftwareId$ = "")
set $Language$ = ""
set $binaryName$ = ""
set $displayVersion$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] DisplayVersion")
set $displayName$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] displayName")
set $TVID$ = GetRegistrystringvalue64 ("["+$Teamviewer$+"\"+$aktKeyVar$+"] ClientID")
set $uninstallString$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] uninstallString")
set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")
set $binaryName$ = GetRegistrystringvalue64 ("["+$uninstKey$+"\"+$aktKeyVar$+"] binaryName")
if not($binaryName$ = "")
if FileExists($binaryName$)
set $VerInfoMap$ = getFileInfoMap($binaryName$)
set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
set $Language$ = LangCodeByHex($langCodeHex$)
endif
endif
if $extended_search$ = "on"
set $SlowInfoMap$ = GetSlowInfoMap($winSoftwareId$,"off")
if count($SlowInfoMap$) > "0"
set $binaryName$ = getValue("binaryName",$SlowInfoMap$)
if ($binaryName$ = "") or ($binaryName$ = "NULL")
set $binaryName$ = ""
endif
set $installSize$ = getValue("installSize",$SlowInfoMap$)
if ($installSize$ = "") or ($installSize$ = "NULL")
set $installSize$ = "-1"
endif
set $lastUsed$ = getValue("lastUsed",$SlowInfoMap$)
if ($lastUsed$ = "") or ($lastUsed$ = "NULL")
set $lastUsed$ = ""
endif
set $usageFrequency$ = getValue("usageFrequency",$SlowInfoMap$)
if ($usageFrequency$ = "") or ($usageFrequency$ = "NULL")
set $usageFrequency$ = "-1"
endif
if not(($binaryName$ = "") or ($binaryName$ = "NULL"))
if FileExists($binaryName$)
set $VerInfoMap$ = getFileInfoMap($binaryName$)
set $langCodeHex$ = DecStrToHexStr(getValue("Language ID 0",$VerInfoMap$),"4")
set $Language$ = LangCodeByHex($langCodeHex$)
endif
endif
endif
endif
sub_create_hash4
endif
endif
[sub_get_windows_info]
DefVar $CurrentVersionProductName$
DefVar $CurrentVersionCSDVersion$
DefVar $CurrentVersionProductId$
DefVar $CurrentVersionCurrentVersion$
DefStringList $localeMap$
set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $binaryName$ = ""
set $lastUsed$ = ""
if GetMsVersionInfo < "5.1"
; GetRegistryStringValueSysNative does not work at win2k
; i.e. Windows 2000
Set $CurrentVersionProductName$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductName")
; i.e. ServicePack 1
Set $CurrentVersionCSDVersion$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CSDVersion")
; i.e. 00376-165-5790905-86892
; http://wiki.lunarsoft.net/wiki/Product_IDs
; xxxxx-yyy-zzzzzzz-zzzzz
; xxxxx: microsoft product code (platform, build, language, and version of windows)
; yyy: channel id (OEM, Volume License, Retail, bundle/Not For Resale)
Set $CurrentVersionProductId$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductId")
; i.e. 6.1
Set $CurrentVersionCurrentVersion$ = GetRegistryStringValue("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CurrentVersion")
else
; i.e. Windows 7 professional N
Set $CurrentVersionProductName$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductName")
; i.e. ServicePack 1
Set $CurrentVersionCSDVersion$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CSDVersion")
; i.e. 00376-165-5790905-86892
; http://wiki.lunarsoft.net/wiki/Product_IDs
; xxxxx-yyy-zzzzzzz-zzzzz
; xxxxx: microsoft product code (platform, build, language, and version of windows)
; yyy: channel id (OEM, Volume License, Retail, bundle/Not For Resale)
Set $CurrentVersionProductId$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] ProductId")
; i.e. 6.1
Set $CurrentVersionCurrentVersion$ = GetRegistryStringValueSysNative("[HKLM\Software\Microsoft\Windows NT\CurrentVersion] CurrentVersion")
endif
Set $winSoftwareId$ = "ms_windows_" + takeString(0, splitString($CurrentVersionProductId$, "-")) + "-" + takeString(1, splitString($CurrentVersionProductId$, "-"))
Set $displayVersion$ = $CurrentVersionCurrentVersion$
Set $displayName$ = $CurrentVersionProductName$
if not ($CurrentVersionCSDVersion$ = "")
Set $displayName$ = $displayName$ + " (" + $CurrentVersionCSDVersion$ + ")"
endif
Set $uninstallString$ = ""
Set $name$ = $displayName$
Set $version$ = $CurrentVersionCurrentVersion$
Set $subversion$ = takeString(0, splitString($CurrentVersionProductId$, "-")) + "-" + takeString(1, splitString($CurrentVersionProductId$, "-"))
set $licenseKey$ = GetValueFromInifile("c:\opsi.org\tmp\swaudit_keys.ini",$winSoftwareId$,"License key","")
Set $localeMap$ = getLocaleInfoMap
;(string 19)system_default_lang_region=de-DE
;Set $Language$ = takeString(1, splitString(takeString(19, $localeMap$), "=") )
Set $Language$ = getValue("system_default_lang_region",$localeMap$)
if (GetSystemType = "64 Bit System")
Set $architecture$ = "x64"
else
Set $architecture$ = "x86"
endif
[sub_get_nt6_hotfix_info]
setloglevel = $Highloglevel$
Set $displayVersion$ = ""
Set $uninstallString$ = ""
Set $version$ = ""
Set $subversion$ = ""
set $licenseKey$ = ""
set $installSize$ = "-1"
set $usageFrequency$ = "-1"
set $binaryName$ = ""
set $lastUsed$ = ""
set $Language$ = LangCodeByHex("0x0000")
set $resultlist$ = GetOutstreamFromSection('DosInAnIcon_get_nt6_hofixes')
set $resultlist$ = getListContaining($resultlist$, "KB")
for %akthotfix% in $resultlist$ do sub_process_nt6_hotfix_info
[sub_process_nt6_hotfix_info]
setloglevel=$Midloglevel$
Set $winSoftwareId$ = trim("%akthotfix%")
Set $displayName$ = trim("%akthotfix%")
Set $name$ = $displayName$
if (GetSystemType = "64 Bit System")
Set $architecture$ = "x64"
else
Set $architecture$ = "x86"
endif
sub_create_hash4
[DosInAnIcon_get_nt6_hofixes]
@echo off
wmic qfe get hotfixid
[sub_create_hash4]
if $displayName$ = ""
set $name$ = $winSoftwareId$
else
set $name$ = $displayName$
endif
set $version$ = $displayVersion$
setloglevel = $Highloglevel$
comment ""
comment "next product is...."
comment "$name$ --------------= "+$name$
;comment "corrected name ---------
comment "$version$ ------------= "+$version$
comment "$TVID$ --------------= "+$TVID$
comment "$subVersion$ ---------= "+$subVersion$
comment "$language$ -----------= "+$language$
comment "$architecture$ -------= "+$architecture$
comment "$windowsSoftwareId$ --= "+$winSoftwareId$
comment "$windowsDisplayName$ -= "+$displayName$
comment "$windowsDisplayVersion$ = "+$displayVersion$
comment "$uninstallString$ ----= "+$uninstallString$
comment "$installSize$ --------= "+$installSize$
comment "$displayVersion$ -----= "+$displayVersion$
comment "$binaryName$ ---------= "+$binaryName$
comment "$licenseKey$ ---------= "+$licenseKey$
setloglevel = $Lowloglevel$
; auditSoftware
; name, version, subVersion, language, architecture, windowsSoftwareId=None, windowsDisplayName=None, windowsDisplayVersion=None, installSize=None
; auditSoftwareOnClient
; name, version, subVersion, language, architecture, clientId, uninstallString=None, binaryName=None, firstseen=None, lastseen=None, state=None, usageFrequency=None, lastUsed=None
; collecting the 'usage frequence' and 'last used' may be illegal according to the laws about employee data privacy
set $lastUsed$ = ""
set $usageFrequency$ = "-1"
;set $ident$ = $name$+";"+$version$+";"+$subversion$+";"+$language$+";"+$architecture$
set $softwareHashlist$ = addtolist($softwareHashlist$, "[newmap]")
set $softwareHashlist$ = addtolist($softwareHashlist$, "type=AuditSoftware")
set $softwareHashlist$ = addtolist($softwareHashlist$, "name="+strPart($name$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "version="+strPart($version$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "subVersion="+strPart($subversion$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "language="+strPart($Language$,"1","9"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "architecture="+strPart($architecture$,"1","3"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsSoftwareId="+strPart($winSoftwareId$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsDisplayName="+strPart($displayName$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "windowsDisplayVersion="+strPart($displayVersion$,"1","99"))
set $softwareHashlist$ = addtolist($softwareHashlist$, "installSize="+$installSize$)
set $softwareHashlist$ = addtolist($softwareHashlist$, "teamviewerId="+strPart($TVID$,"1","9"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "[newmap]")
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "type=AuditSoftwareOnClient")
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "name="+strPart($name$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "version="+strPart($version$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "subVersion="+strPart($subversion$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "language="+strPart($Language$,"1","9"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "architecture="+strPart($architecture$,"1","3"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "clientId="+strPart($clientId$,"1","254"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "uninstallString="+strPart($uninstallString$,"1","199"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "binaryName="+strPart($binaryName$,"1","99"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "usageFrequency="+$usageFrequency$)
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "licenseKey="+strPart($licenseKey$,"1","254"))
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "teamviewerId="+strPart($TVID$,"1","9"))
if not($lastUsed$ = "")
set $softwareOnClientHashlist$ = addtolist($softwareOnClientHashlist$, "lastUsed="+$lastUsed$)
endif
[execWith_getuninstallkeys]
@echo off
reg query $uninstkey$
[DosInAnIcon_getuninstallkeys]
@echo off
regedit /e "c:\opsi.org\tmp\myreg.reg" $uninstkey$
[sub_remove_brackets]
set $tmp$ = takeFirstStringContaining(splitstring($aktKeyVar$,"["), $uninstkey$)
set $tmp$ = takeFirstStringContaining(splitstring($tmp$,"]"), $uninstkey$)
set $uninstkeys$ = addtolist($uninstkeys$, $tmp$)
[Winbatch_start_keyfinder]
"%SCRIPTPATH%\keyfinder\keyfinder.exe" /close /saveini "c:\opsi.org\tmp\" /file "swaudit_keys.ini"
[Files_del_temp]
del "c:\opsi.org\tmp\swaudit_keys.ini"
[opsiservicecall_authenticated]
"method": "authenticated"
"params": [
]
[opsiservicecall_setSoftwareInformation]
"method": "setSoftwareInformation"
"params": [
"$clientId$"
'$swAuditInfoStr$'
]
[opsiservicecall_getPossibleMethods_listOfHashes]
"method": "getPossibleMethods_listOfHashes"
"params": [
]
[opsiservicecall_auditSoftwareOnClient_setObsolete]
"method": "auditSoftwareOnClient_setObsolete"
"params": [
"$clientId$"
]
; name, version, subVersion, language, architecture, clientId, teamviewerId, uninstallString=None, binaryName=None, firstseen=None, lastseen=None, state=None, usageFrequency=None, lastUsed=None
[OpsiServiceHashList_auditSoftware_createObjects]
"method": "auditSoftware_createObjects"
"HashList": "$softwareHashlist$"
"params": [
]
; name, version, subVersion, language, architecture, windowsSoftwareId=None, windowsDisplayName=None, windowsDisplayVersion=None, installSize=None
[OpsiServiceHashList_auditSoftwareOnClient_createObjects]
"method": "auditSoftwareOnClient_createObjects"
"HashList": "$softwareOnClientHashlist$"
"params": [
]
[sub_build_auditsoftware]
set $element$ = EscapeString:%s%
set $line$ = composeString(splitstring($element$, "'"), "''")
Patchtextfile_auditsoftware "c:\opsi.org\tmp\auditsoftware_%PCName%.txt"
[Patchtextfile_auditsoftware]
AppendLine '$line$'
[sub_build_auditSoftwareOnClient]
set $element$ = EscapeString:%s%
set $line$ = composeString(splitstring($element$, "'"), "''")
Patchtextfile_auditSoftwareOnClient "c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt"
[Patchtextfile_auditSoftwareOnClient]
AppendLine '$line$'
[Files_del_old]
del -f "c:\opsi.org\tmp\auditsoftware_%PCName%.txt"
del -f "c:\opsi.org\tmp\auditsoftwareOnClient_%PCName%.txt"
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hy zusammen,
das Problem ist auf den Schulung, ein danke an Herrn Dr. Wolf, gelöst worden.
Eine Infomation vorweg, swaudit ist eine geschlossene abfrage, hier eine weitere Spalte in der MySQL anlegen zulassen ist nicht vorgesehen und nur mittels änderungen am Code selbst zu ändern. Hier selbst Hand anzulegen würde die möglichkeit eines reibungslosen Updates stark einschränkt.
Es gibt aber mehrere möglichkeiten meine gewünschte Information aus der Reg z.b. in die Hostbeschreibung, einer Hosteigenschaft und zugar mit änderungen an der swaudit.ins (Vorsicht bei Updates) in die Spalte der Lizenzkeys zurück zuschreiben.
Für mich ist das Problem gelöst.
das Problem ist auf den Schulung, ein danke an Herrn Dr. Wolf, gelöst worden.
Eine Infomation vorweg, swaudit ist eine geschlossene abfrage, hier eine weitere Spalte in der MySQL anlegen zulassen ist nicht vorgesehen und nur mittels änderungen am Code selbst zu ändern. Hier selbst Hand anzulegen würde die möglichkeit eines reibungslosen Updates stark einschränkt.
Es gibt aber mehrere möglichkeiten meine gewünschte Information aus der Reg z.b. in die Hostbeschreibung, einer Hosteigenschaft und zugar mit änderungen an der swaudit.ins (Vorsicht bei Updates) in die Spalte der Lizenzkeys zurück zuschreiben.
Für mich ist das Problem gelöst.

- n.wenselowski
- Ex-uib-Team
- Beiträge: 3194
- Registriert: 04 Apr 2013, 12:15
Re: swaudit zusätzlicher registry key auslesen und im Configed anzeigen
Hi,
Gruß
Niko
Okay, das habe ich dann vllt falsch verstanden. Eigene Spalten sind tatsächlich kompliziert, eigene Reihen (aka. Einträge) weniger.Lukas hat geschrieben:Eine Infomation vorweg, swaudit ist eine geschlossene abfrage, hier eine weitere Spalte in der MySQL anlegen zulassen ist nicht vorgesehen und nur mittels änderungen am Code selbst zu ändern. Hier selbst Hand anzulegen würde die möglichkeit eines reibungslosen Updates stark einschränkt.
Super!Lukas hat geschrieben:Für mich ist das Problem gelöst.
Gruß
Niko
Code: Alles auswählen
import OPSI