Hallo zusammen,
ich habe ein C#-COM-Dll geschrieben (inkl. einer REG-Datei).
Auf einer lokalen Maschine funktioniert das ganze Wunderbar...
Bei einem Kunden, der nur mit Terminal-Clients arbeitet, wurde die DLL mit Hilfe der reg-Datei über eine Service-Rolle durch den zuständigen Systembetreuer eingespielt (ich kann die Einträge unter HKLM sehen...)
OLE-Fehler - die Klasse ist nicht registriert " 🤔
Die einzelnen User sind keine Admin´s (aber auch das angebliche Setzen der Admin-Rechte eines Users brachte keine Veränderung).
Was muss auf einem Terminal-Client gemacht werden, bzw. wie muss der User Rechte-mäßig eingestellt werden, damit eine Registrierung/Zugriff erfolgreich ist ???
MfG ChrisProg
Was ist ein Terminal-Client? Remotedesktop-Benutzer?
Kannst Du mal den vollständigen Stacktrace der Exception posten?
Hallo hypersurf,
Ja, ich meine einen Remotedesktop-Benutzer.
Leider gibt es keinen Stack-Trace, da ich die DLL mit VisualFoxPro aufrufe --> CreateObject(COMServer.Class")
oSendOutlMail = CreateObject("VFPsendmail.SendOutlookMail")
und direkt hier erhalte ich die Fehlermeldung "OLE-Fehlercode 0x80040154" die Klasse ist nicht registriert ...
Wie gesagt, es muss etwas mit den Remotedesktop-Clients zu tun haben (damit kenne ich mich nicht so gut aus, u. ich glaube leider der Systembetreuer des Kunden auch nicht ...) - auf einer lokalen Maschine mit direktem Programmaufruf funktioniert alles genau so wie es soll !
MfG ChrisProg
Was passiert wenn Du die DLL manuell mittels regasm auf dem Remotedesktopserver (als Administrator) registrierst?
Um das tun zu können müsste ich doch das .Net-Famework SDK auf den Kundenrechner installieren - und das kommt leider nicht in Frage ...
MfG ChrisProg
Wie genau soll Deine C# DLL auf einem Server ohne .NET Framework funktionieren?
Die regasm Exe kann man auch einfach kopieren; IIRC hat diese keine Dependencies.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Ich habe nicht gesagt "ohne", die "normalen" Runtimes werden schon benötigt..
Zur Info: das ist nur eine Hilfs-dll, um eine E-Mail aus VFP heraus per Outlook zu versenden (leider gibt es diesbezüglich einen Bug in VFP --> der Absender kann nicht gewählt werden, u. genau diese Funktion brauche ich )
Das ich die regasm.exe einfach so kopieren kann, wusste ich nicht (werde ich umgehend ausprobieren) ...
MfG ChrisProg
Um das tun zu können müsste ich doch das .Net-Famework SDK auf den Kundenrechner installieren - und das kommt leider nicht in Frage ...
Wie genau soll Deine C# DLL auf einem Server ohne .NET Framework funktionieren?
Ich habe nicht gesagt "ohne", die "normalen" Runtimes werden schon benötigt..
Wie soll man daraus schlau werden?
Ich habe den Titel mal angepasst, so dass Suchende auch etwas damit anfangen können. EDIT: Ich sollte beim Wort "Shift" im Titel das "f" nicht vergessen... 😄
Wie soll man daraus schlau werden?
Also, wenn ich nicht total daneben liege, dann gibt es zu Ausführen der .NET-Programme die "normalen" Runtimes - das .NET-Framework.
Aber um Programme entwickeln zu können brauche ich das .Net-Framework SoftwareDeveloperKit und das enthält die regasm.exe, oder etwa nicht ?
Korrigiert mich bitte, wenn ich damit falsch liege ...
MfG ChrisProg
regasm.exe gehört zu den .NET Framework Tools
Man findet die Datei im jew. Verzeichnis des .NET-Frameworks.
Beispiel:
%windir%\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe
OK, wieder was dazugelernt ...
Ich bin dann wohl einer Fehlinfo seitens MS erlegen: -->Regasm.exe
Dort steht:
Zum Ausführen des Tools verwenden Sie die Developer-Eingabeaufforderung (oder die Visual Studio-Eingabeaufforderung in Windows 7). Weitere Informationen finden Sie unter Developer-Eingabeaufforderung für Visual Studio..
Und das gibt es doch nur mit dem SDK, oder ?
Danke - bis hierher erst einmal ...
MfG ChrisProg
Und das gibt es doch nur mit dem SDK, oder ?
Keine Ahnung 😉
Es würde keinen Sinn machen auf jedem Rechner neben dem Framework noch etwas installieren zu müssen, nur weil man eine COM-DLL registrieren muss.
So,
der Tip mit der regasm.exe hat funktioniert - anschließend konnte ich die COM.dll benutzen.
Warum das vorher nicht ging, trotz vorhandener Registry-Einträge wird wohl MS Geheimnis bleiben 🤔 😜
Danke an alle für die Inputs 😉
MfG ChrisProg