MSTSCLib Warnung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    MSTSCLib Warnung

    Hallo zusammen,

    ich hänge hier irgendwie fest und komme nicht weiter.

    Ich habe meinem Projekt ein Setup Installer hinzugefügt und eingestellt, wenn ich aber dann das Projekt erstellen möchte, dann kommen folgende Warnungen:

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand

    Warnung Verarbeite COM-Verweis "MSTSCLib" aus Pfad "C:\Windows\SysWOW64\mstscax.dll". Mindestens ein Argument für "MsRdpClient7.get_UIParentWindowHandle" kann nicht vom Laufzeitmarshaller gemarshallt werden. Diese Argumente werden deshalb als Zeiger übergeben und erfordern zum Ändern möglicherweise unsicheren Code.

    Dieser Warnung kommt aber dann 63 Mal. Kann mir bitte wer erklären, was das ist, ich kann damit fast nichts anfangen.

    Danke schon mal

    Viele Grüße
    @Maltur Was für ein Programm ist Dein Programm (x86, x64, AnyCPU)?
    Was ist das für ein Installer?
    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!
    Hallo Ihr zwei,

    es ist das Shellprogramm. Die Windowsshell wird durch mein Programm ersetzt, dieses Programm ermöglich eine RDP-Konfiguration und natürlich auch eine RDP-Verbindung zum Terminalserver. Es basiert auf x64.
    Damit das ganze funktioniert, musste ich einen Verweis auf "COM" "Microsoft Terminal Services Control Type Library" herstellen.
    Der Setup Installer ist eine Visual Studio Erweiterung "Microsoft Visual Studio Installer Projects".

    Ich habe das Gefühl, das irgend ein Verweis fehlt, verstehe es aber nicht wirklich.
    Das Programm funktioniert einwandfrei auch ohne Installation, ich möchte aber nicht manuell jeden einzelnen benötigten Ordner und Speicherdatei selber erstellen müssen, darum der Installer.
    Das Problem tritt auf, wenn ich versuche, das Projekt zu erstellen, unabhängig vom Installer. Das habe ich erst eben rausgefunden.

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

    @Maltur k.A. ob das so stimmt weil so gut kenne ich mich damit nicht aus. Ist wahrscheinlich eher was für C++ Experten. Also mal kurz recherchiert und folgendes herausgefunden. Mein VB6 zb zeigt für IMsRdpClientNonScriptable2.Get_UIParentWindowHandle -> wireHwnd an. Wenn ich mir diese DLL mit dem PowerVB Type Library Editor anschaue, steht da auch wireHwnd. Wenn Du mal nach "wireHwnd" googelst, wirst Du haufenweise Treffer finden. wireHwnd ist, wenn ich mir das in dem PowerVB Type Library Editor anschaue eigentlich eine Structure _RemoteHandle mit 2 Feldern. Erstes Feld fContext ist ein Integer, zweites Feld ist wieder eine Structure __MIDL_IWinTypes_0009 mit einer Union.

    Nun könnte es sein das .NET damit nicht zurecht kommt (weil für den entsprechenden Parameter IntPtr angezeigt wird) und es deshalb zu Deiner Fehlermeldung kommt das der Laufzeitmarshaller diesen Parameter nicht marshallen kann. Aber wie geschrieben, genaueres könnten Dir C++ Experten beantworten.
    Mfg -Franky-

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

    OK, ich habe das Problem gefunden, ich verstehe das Ganze nicht warum, wieso und weshalb das so ist, aber das Problem ist behoben.

    Ich habe im Designer folgende zwei Zeilen gefunden:

    Quellcode

    1. 'Friend WithEvents AxMsRdpClient111 As AxMSTSCLib.AxMsRdpClient11
    2. 'Friend WithEvents AxMsRdpClientNotSafeForScripting1 As AxMSTSCLib.AxMsRdpClientNotSafeForScripting


    Wenn ich diese auskommentieren, dann funktioniert das Programm so wie es soll, natürlich werde ich jetzt alles Mal durchtesten, ob auch wirklich alles so funktioniert, wie ich es mir gedacht hatte.
    Wenn mir wer erklären kann, was das für ein Problem ist, würde ich mich freuen.
    @Maltur

    Bei den Events das gleiche. Wahrscheinlich wegen dem Event OnRemoteWindowDisplayed. Zweiter Parameter davon ist wieder ein, laut PowerVB Type Library Editor, ein wireHwnd das von VB.NET als IntPtr interpretiert wird. Wenn ich mir andere COM-Interfaces anschau, wo ebenfalls für einen Parameter ein Hwnd erforderlich ist, dann hat dieser Paramerter ein Long (in .NET ein Integer bzw. IntPtr) und kein wireHwnd. Wie geschrieben, wireHwnd ist kein IntPtr und kann daher von VB.NET so nicht gemarshallt werden.
    Bilder
    • mstscax.dll.png

      14,51 kB, 544×300, 65 mal angesehen
    Mfg -Franky-