Link im Programm soll Remotedesktopverbindung mit Parametern aufrufen

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Link im Programm soll Remotedesktopverbindung mit Parametern aufrufen

    Hallo,

    ich möchte gerne ein kleines Programm erstelle, um mehrere Server anzupingen und per Klick darauf eine RDP-Verbindung aufbauen.

    Das hier öffnet zwar die mstsc.exe, also die Remotedesktopvebrindung, allerdings kann ich keine Parameter mitgeben - dann sagt er immer die Datei wird nicht gefunden.

    Private Sub linkRdpStsv01f_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles linkRdpStsv01f.LinkClicked
    Dim processRemoteDesktop As New Process
    processRemoteDesktop.StartInfo.FileName = "mstsc.exe"
    processRemoteDesktop.Start()
    End Sub

    Jemand eine Idee, wie ich das realisieren kann? Ich habe auch schon gedacht über cmd das aufzurufen, aber ich glaube dann bleibt während der Sitzung das Kommandozeilenfenster im Hintergrund, oder?

    Konkret möchte ich folgendes aufrufen:
    mstsc.exe /v:meinserver.de /f

    Vielen Dank für Hilfe!

    gammlo schrieb:

    die Datei wird nicht gefunden.
    Dann gib ihr den richtigen Pfad mit:

    VB.NET-Quellcode

    1. Dim processRemoteDesktop As New Process
    2. processRemoteDesktop.StartInfo.FileName = "DER_PFAD" & "mstsc.exe"
    3. processRemoteDesktop.StartInfo.Arguments = "bla"
    4. processRemoteDesktop.StartInfo.WorkingDirectory = "DER_PFAD"
    5. processRemoteDesktop.Start()
    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!
    Ah, verstehe.

    .Arguments hats gebracht.

    Ich habs jetzt so gemacht, funktioniert erstmal gut:

    VB.NET-Quellcode

    1. Private Sub linkRdpStsv01f_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles linkRdpStsv01f.LinkClicked
    2. Dim processRemoteDesktop As New Process
    3. processRemoteDesktop.StartInfo.FileName = "mstsc.exe"
    4. processRemoteDesktop.StartInfo.Arguments = "/v:mein.server.im.internet.de /f"
    5. processRemoteDesktop.Start()
    6. End Sub

    gammlo schrieb:

    Ah, verstehe.
    Steht der Pfad SDeiner Anwendung in der System-Path-Umgebungsvariable?
    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!
    Hmm.... um den Quellcode sauber zu halten, würde ich gerne eine Funktion zum RDP-Aufruf erstellen. Als Parameter würde ich gerne die IP übergeben. Wie mache ich das denn am besten?

    Macht man soetwas auch über Private Sub?

    Habe schon gegoogled, da finde ich immer etwas über Prozeduren und komplizierten Attributslisten....

    EDIT:
    @RodFromGermany:
    Nein, habe diesbezüglich nichts geändert. mstsc kann aber problemlos aufgerufen werden. Ich würde es auch gerne ohne Pfade machen, da sich die ja von System zu System unterscheiden können.

    VB.NET-Quellcode

    1. 'Definiere den Aufruf der RDP-Sitzung (Funktion)
    2. Private Sub openrdp(ByVal serverAddress As String)
    3. Dim rdcProcess As New Process
    4. rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%\system32\cmdkey.exe")
    5. rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/" & serverAddress & " /user:" + "administrator" + " /pass:" + "admin"
    6. rdcProcess.Start()
    7. rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%\system32\mstsc.exe")
    8. rdcProcess.StartInfo.Arguments = "/v " & serverAddress
    9. rdcProcess.Start()
    10. End Sub


    Es erscheint für einen Bruchteil einer Sekunde das Kommandozeilenfenster und dann erscheint die Eingabemaske für die RDP-Sitzung. D.h. der Remote Desktopsession-Prozess wird schonmal korrekt aufgerufen. Nur die automatische Eingabe von Username und Passwort funktioniert noch nicht.

    EDIT: Ich habe es testweise auch mal so probiert, geht leider auch nicht:

    VB.NET-Quellcode

    1. 'Definiere den Aufruf der RDP-Sitzung (Funktion)
    2. Private Sub openrdp(ByVal serverAddress As String)
    3. Dim rdcProcess As New Process
    4. rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%\system32\cmdkey.exe")
    5. rdcProcess.StartInfo.Arguments = "/generic:TERMSRV/" & serverAddress & " /user:" & "administrator" & " /pass:" & "admin"
    6. rdcProcess.Start()
    7. rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%\system32\mstsc.exe")
    8. rdcProcess.StartInfo.Arguments = "/v " & serverAddress
    9. rdcProcess.Start()
    10. End Sub

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

    gammlo schrieb:

    VB.NET-Quellcode

    1. rdcProcess.StartInfo.FileName = Environment.ExpandEnvironmentVariables("%SystemRoot%\system32\cmdkey.exe")
    Hast Du Dich per Haltepunkt oder MessageBox oder Debug.WriteLine oder wie auch immer davon überzeugt, dass da der richtige Pfad drin steht?
    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!
    Der Pfad sollte passen:


    Außerdem, wenn ich die %SystemRoot%\system32\cmdkey.exe Datei über Start - Ausführen aufrufe, erscheint für einen Bruchteil der Sekunde die Eingabeaufforderung. Wenn der Pfad nicht stimmen würde, würde ich ja spätestens dann eine Fehlermeldung erhalten.

    gammlo schrieb:

    Datei über Start - Ausführen aufrufe
    ist das halt ganz anders.

    RodFromGermany schrieb:

    Hast Du Dich per Haltepunkt oder MessageBox oder Debug.WriteLine oder wie auch immer davon überzeugt, dass da der richtige Pfad drin steht?
    Also nicht überzeugt.
    Mach mal dies:

    VB.NET-Quellcode

    1. MessageBox.Show(rdcProcess.StartInfo.FileName)
    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!
    Pushs sind absolut unnötig ... beinhaltet dein Benutzername/Passwort Sonderzeichen? Dann setz zusätzlich Anführungszeichen drum herum.
    Was passiert, wenn Du Dein Programm vom System (Kommandozeile oder BATCH-Datei) aus startest?
    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!