Service kann nicht auf referenzierte DLL zugreifen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von ChrizzleWhizzle.

    Service kann nicht auf referenzierte DLL zugreifen

    Hallo Zusammen,

    Ich bin gerade dabei einen Service zu programmieren aufgrund von Datenschutzrichtlinien muss ich meine Daten verschlüsseln und dies bewerkstellige ich mittels referenzierter DLL. Bei einem normalen windoof Programm funktioniert das auch super jedoch bei dem Service liefert mir der Debugger jedesmal folgende Meldung sobald ich auf eine Funktion der DLL zugreifen möchte

    Quellcode

    1. Die DLL "diCryptoSys.dll": Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) kann nicht geladen werden.


    Egal an welchem Ort ich die DLL referenziere (Debug-Ordner, C:\temp usw.) jedesmal kann der Service die DLL nicht finden :S

    Kann mir jemand weiterhelfen? oder werden noch weitere Angaben benötigt?

    MfG ChrizzleWhizzle
    Dann lass doch mal den Service den Pfad ausgeben, auf dem er die DLL sucht. Und in diesen kopierst Du die DLL.
    Fertig.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Quadsoft schrieb:

    Befindet sich die DLL wirklich im gleichen Ordner wie der Dienst? Was passiert, wenn du die DLL in den GAC (Global Assembly Cache) einträgst?


    1. Also die DLL befindet sich im selben Ordner wie die Service.exe und den Dienst installier ich mit "installutil Service". Dies wird auch erfolgreich gemacht und ich sehe den Dienst in der Computerverwaltung.
    2. Meinst du das hier? msdn.microsoft.com/de-de/library/bb979105.aspx

    RodFromGermany schrieb:


    Dann lass doch mal den Service den Pfad ausgeben, auf dem er die DLL sucht. Und in diesen kopierst Du die DLL.


    Wenn ich mir den FullQualifiedName ansehe und dort nachsehe finde ich dort auch die DLL.

    :-/
    Also ich habe den Schlüssel erzeugt und möchte nun das Projekt signieren jedoch kommt dann immer folgende Fehlermeldung

    Quellcode

    1. Assembly wurde nicht generiert: Die Assembly diCrSysAPINet, auf die verwiesen wird, hat keinen starken Namen..


    Habe danach mit Tlbimp versucht dieser einen starken Namen zuzuweisen, dabei kam die Fehlermeldung:

    Quellcode

    1. diCrSysAPINet is not a valid type Library


    zusätzlich mit sn.exe habe ich auf einen starken Namen hingeprüft:

    Quellcode

    1. diCrSysAPINet stellt keine Assembly mit einem starken Namen dar.

    ChrizzleWhizzle schrieb:

    FullQualifiedName
    hat nicht unbedingt was mit dem Pfad zu tun, wo das Programm seine DLLs sucht.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Bestimme mal die aktuell voreingestellte Directory (CurDir).
    Anhaltspunkt hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Bestimme mal die aktuell voreingestellte Directory (CurDir).
    Anhaltspunkt hier.


    Dort wird mir der Debug-Ordner angezeigt

    Edit:

    Meine Güte nochmal....... Habe folgendes im Manual der API gefunden:

    Quellcode

    1. Note that you must also have the core Win32 (or X64) executable diCryptoSys.dll installed on your system for the .NET interface to work. If not, it will throw an exception immediately:
    2. Unhandled Exception: System.DllNotFoundException:
    3. Unable to load DLL 'diCryptoSys.dll':
    4. The specified module could not be found.
    5. (Exception from HRESULT: 0x8007007E)
    6. If you are working on a 64-bit system, Visual Studio will go looking for the 64-bit core DLL in the Windows system folder (usually C:\Windows\System32). Make sure you set the Solution Platform to be Any CPU.


    ... nun bekomme ich zwar den Fehler invalid key aber die DLL kann ja nun endlich immerhin gefunden werden....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ChrizzleWhizzle“ ()