Entwickler-Ecke

Netzwerk - Programm auf entfernten NT Rechner starten


MiHa80 - Fr 31.10.08 16:56
Titel: Programm auf entfernten NT Rechner starten
Hallo,

wie ist es möglich mit Process ein Programm auf einem entfernten Rechner mit NT 4.0 zu starten. WMI funktioniert auf dem entfernten Rechner nicht, allerdings ist dort das dotnetframework 1.1 installiert.


MiHa80 - Sa 01.11.08 09:10

weiß niemand wie das geht, oder ob das geht ?


Timosch - Sa 01.11.08 13:12

Telnet? Aber wieso geht WMI nicht?


MiHa80 - Do 13.11.08 11:15

Hallo,

also ich habe es geschafft mittels WMI ein Programm auf einem anderen Rechner zu starten. Dazu musste ich auf dem anderen NT 4.0 Rechner WMI mittel WMICore installieren.

Hier der Code mit dem ich das Programm starte:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
        public bool RemoteStartWin2KWinXP(string remoteMachine, string RemoteProg)
        {
            ConnectionOptions connOptions = new ConnectionOptions();
            connOptions.Username = "Test";
            connOptions.Password = "Test";
            connOptions.Impersonation = ImpersonationLevel.Impersonate;
            connOptions.EnablePrivileges = true;
            ManagementScope manScope = new ManagementScope(String.Format(@"\\{0}\root\cimv2",
remoteMachine),connOptions);
            manScope.Connect();

            ObjectGetOptions objectGetOptions = new ObjectGetOptions();
            ManagementPath managementPath = new ManagementPath("Win32_Process");
            ManagementClass processClass = new ManagementClass(manScope, managementPath, objectGetOptions);
            ManagementBaseObject inParams = processClass.GetMethodParameters("Create");
            inParams["CommandLine"] = RemoteProg;
            ManagementBaseObject outParams = processClass.InvokeMethod("Create", inParams, null);

            //ausgabe = "\nCreation of the process returned: " + outParams["returnValue"];
            Thread.Sleep(100);
            ausgabe = "\nProcess ID: " + outParams["processId"];
            if (outParams["returnValue"].ToString() != "0"return false;
            else return true;
        }


Wie kann ich jetzt aber das Programm minimiert starten ?


Th69 - Do 13.11.08 14:44

Das müßte mit Hilfe der Win32_ProcessStartup-Klasse gehen: s. http://msdn.microsoft.com/en-us/library/aa394375.aspx.

Du mußt dann einfach ein Objekt davon erzeugen und ShowWindow auf "SW_SHOWMINIMIZED" (2) setzen.
Anschließend mittels

C#-Quelltext
1:
inParams["ProcessStartupInformation"] = processStartup;                    

der Process-Create-Methode übergeben (s.a. http://msdn.microsoft.com/en-us/library/aa389388(VS.85).aspx).


MiHa80 - Do 13.11.08 16:00

Hallo,
danke für die Antwort.
Komme aber damit nicht ganz klar.

Kannst du mir evtl. anhand meines Codes erklären wie das geht ?