Laden...

COM-DLL im Terminal-Client

Erstellt von ChrisProg vor 6 Jahren Letzter Beitrag vor 6 Jahren 3.039 Views
ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren
COM-DLL im Terminal-Client

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...)

  • trotzdem sagt unsere Software ständig "> Fehlermeldung:

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

H
523 Beiträge seit 2008
vor 6 Jahren

Was ist ein Terminal-Client? Remotedesktop-Benutzer?

Kannst Du mal den vollständigen Stacktrace der Exception posten?

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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

H
523 Beiträge seit 2008
vor 6 Jahren

Was passiert wenn Du die DLL manuell mittels regasm auf dem Remotedesktopserver (als Administrator) registrierst?

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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

16.807 Beiträge seit 2008
vor 6 Jahren

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.

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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

T
461 Beiträge seit 2013
vor 6 Jahren

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... 😄

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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

H
523 Beiträge seit 2008
vor 6 Jahren

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

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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

H
523 Beiträge seit 2008
vor 6 Jahren

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.

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 6 Jahren

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