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!
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.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.