PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB .NET] Prüfen, ob eine DLL registriert ist


dariegel
2009-02-15, 00:50:18
Abend,

ich möchte prüfen, ob die Datei shimgvw.dll im System registriert ist. Sie stellt die "Windows Bild- und Faxanzeige" zur Verfügung. Registrieren bzw. deregistrieren per regsvr32.exe ist klar, aber damit lässt sich nichts prüfen.

Kann mir jemand eine Anregung geben? Google spuckt nichts Brauchbares aus.

Danke!

Gast
2009-02-15, 00:58:54
wüsste ich jetzt nichts so direkt, habe nur methoden gesehen, die testweise eine übergebene dll laden....

Marscel
2009-02-15, 01:02:28
Das war jetzt mein erster Googletreffer:

http://newsgroups.cryer.info/borland/public.delphi.nativeapi.win32/200702/0702247304.html

Sephiroth
2009-02-15, 01:23:03
hm, du könntest in der Registry unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs nachsehen
oder du besorgst dir die CLSID und schaust unter HKEY_CLASSES_ROOT\CLSID\[gesuchte CLSID]\InprocServer32 nach (siehe oben)

die CLSID bekommst du, wenn du die dll als typelib lädst. der wert steht dann als GUID in LibID

dariegel
2009-02-15, 02:02:57
Danke, hab wohl die falschen Schlüsselwörter genutzt. Werd' mir das anschauen.

dariegel
2009-02-17, 22:20:56
hm, du könntest in der Registry unter HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDLLs nachsehen
oder du besorgst dir die CLSID und schaust unter HKEY_CLASSES_ROOT\CLSID\[gesuchte CLSID]\InprocServer32 nach (siehe oben)

die CLSID bekommst du, wenn du die dll als typelib lädst. der wert steht dann als GUID in LibID

Danke, die Variante mit der CLSID funktioniert. :)

PatkIllA
2009-02-17, 22:22:59
Einfach benutzen und die Exception abwarten :)

dariegel
2009-02-18, 01:07:56
Einfach benutzen und die Exception abwarten :)

Warum? Wegen der benötigten Rechte?
So sieht's bis jetzt aus:


Public Shared Property WinFaxAndPicViewerEnabled() As Boolean
Get
Dim strSubKeys() As String = {vbNullString}

CReg.GetAllSubKeys(CReg.HkeyClassesRoot, "CLSID", strSubKeys)

For i As Integer = 0 To strSubKeys.GetLength(0) - 1
If strSubKeys(i) = "{3F30C968-480A-4C6C-862D-EFC0897BB84B}" Then
Return True
End If
Next

Return False
End Get
Set(ByVal value As Boolean)

Select Case value
Case True : If Not WinFaxAndPicViewerEnabled Then Process.Start("regsvr32.exe", "/s shimgvw.dll")
Case False : If WinFaxAndPicViewerEnabled Then Process.Start("regsvr32.exe", "/s /u shimgvw.dll")
End Select

End Set
End Property


Verbesserungsvorschläge?

PatkIllA
2009-02-18, 09:50:39
Warum? Wegen der benötigten Rechte?Wenn Rechte fehlen, dann ggibt es auch eine Exception. Deine Lösung wird auf einem engeschränkten Konto auch nicht funktionieren.