Entwickler-Ecke

Basistechnologien - System.Diagnostics.Process.Start funktioniert nicht


Man-Chro - Do 04.12.08 15:57
Titel: System.Diagnostics.Process.Start funktioniert nicht
Hi,

ich möchte ein Netzlaufwerk verbinden lassen per Console. Doch leider funktioniert es nicht und ich habe etwas Zeitdruck :( Eigentlich entwickle ich nicht in C-Sharp sondern in PHP es ist ein kleines Projekt, verzeiht mir daher Anfängerfehler.


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:
25:
26:
27:
28:
29:
30:
31:
32:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Netzlaufwerke
{
    public partial class form1 : Form
    {
        public form1()
        {
            InitializeComponent();
        }

        private void verbinden_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Verbinden");

            System.Diagnostics.Process.Start("net use y: \\SERVER\ORDNER PASSWORT /user:BENUTZERNAME");

        }

        private void nichtverbinden_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Nicht verbinden");
        }
    }
}


Auch habe ich hier nachgesehen: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.start.aspx doch leider bin ich nicht wirklich fündig geworden.


Könnt ihr mir sagen, was ich falsch mache?



Über Hilfe würde ich mich sehr freuen!


Grüße


Christian S. - Do 04.12.08 16:03

Schau Dir mal die Überladungen der Start-Methode an, die Start-Parameter werde nämlich gesondert übergeben. :-)

//Edit: :welcome: im Forum


Man-Chro - Do 04.12.08 17:00

user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Schau Dir mal die Überladungen der Start-Methode an, die Start-Parameter werde nämlich gesondert übergeben. :-)

//Edit: :welcome: im Forum


Hi,

danke für das welcome im Forum. Meinst du mit gesondert übergeben "befehl", "paramter 1"? Bei dem MSDNA habe ich das so verstanden dass ich eine "*.exe", "parameter", aber ich habe in meinem befehl keine Exe. Ich verstehe das nicht, was ich da machen soll.


Th69 - Do 04.12.08 17:04

Doch "net" ist dein Befehl. Gib doch einfach mal "net.exe" in die console ein -)


Man-Chro - Do 04.12.08 17:23

user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Doch "net" ist dein Befehl. Gib doch einfach mal "net.exe" in die console ein -)


Ok, dann hab ich das mal geändert in:

System.Diagnostics.Process.Start(@"net.exe", @"use y: \\SERVER\ORDNER PASSWORT /user:BENUTZERNAME");


Es funktioniert immer noch nicht. :( ist noch ein Fehler drin?


jaenicke - Do 04.12.08 17:41

Probier den Befehl mal an der Kommandozeile aus, bei mir funktioniert das...
Da stimmt dann etwas mit dem Befehl nicht. Falscher Benutzername? Tippfehler?

Aber die entsprechende Fehlermeldung siehst du ja, wenn du es außerhalb von C# selbst in die Konsole eingibst.


Man-Chro - Do 04.12.08 18:48

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Probier den Befehl mal an der Kommandozeile aus, bei mir funktioniert das...
Da stimmt dann etwas mit dem Befehl nicht. Falscher Benutzername? Tippfehler?

Aber die entsprechende Fehlermeldung siehst du ja, wenn du es außerhalb von C# selbst in die Konsole eingibst.


Hi, der Befehl ist richtig geschrieben ich bekomme ein Fehler beim Compalieren:

C#-Quelltext
1:
Fehler  1  Der Typ- oder Namespacename "Process" ist im Namespace "System" nicht vorhanden. (Fehlt ein Assemblyverweis?)  C:\Dokumente und Einstellungen\User\Eigene Dateien\Visual Studio 2008\Projects\Netzlaufwerke\Netzlaufwerke\Form1.cs  29  20  Netzlaufwerke                    


JüTho - Do 04.12.08 19:42

Hallo,

diese Fehlermeldung (und natürlich ihre Beseitigung :wink: ) musst Du Dir unbedingt merken! Er ist bei Anfängern sehr verbreitet, kann aber auch ganz leicht beseitigt werden:

1. Gehe in die SDK-Doku/MSDN zu der Klasse, in diesem Fall "Process" unter "Informationen zur ...". Dort steht, welcher Namespace und welche DLL diese Klasse enthalten.

2. Unter using ist der korrekte Namespace einzubinden; bitte beachte, dass jeder Namespace eigenständig gilt und es sich nicht um eine hierarchische Gliederung handelt.

3. Unter Referenzen ist die DLL (Assembly) hinzuzufügen (sofern sie nicht, wie in diesem Fall, sowieso standardmäßig aufgeführt wird).

Jürgen


Man-Chro - Do 04.12.08 20:36

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

diese Fehlermeldung (und natürlich ihre Beseitigung :wink: ) musst Du Dir unbedingt merken! Er ist bei Anfängern sehr verbreitet, kann aber auch ganz leicht beseitigt werden:

1. Gehe in die SDK-Doku/MSDN zu der Klasse, in diesem Fall "Process" unter "Informationen zur ...". Dort steht, welcher Namespace und welche DLL diese Klasse enthalten.

2. Unter using ist der korrekte Namespace einzubinden; bitte beachte, dass jeder Namespace eigenständig gilt und es sich nicht um eine hierarchische Gliederung handelt.

3. Unter Referenzen ist die DLL (Assembly) hinzuzufügen (sofern sie nicht, wie in diesem Fall, sowieso standardmäßig aufgeführt wird).

Jürgen


Hi Jürgen,

vielen vielen Dank für deine Hilfe, kannst du mir auch sagen was der Fehler bedeutet bzw. was ich da mache, dass ich auch etwas lerne und mir es merken kann?


Grüße


JüTho - Fr 05.12.08 10:50

user profile iconMan-Chro hat folgendes geschrieben Zum zitierten Posting springen:
kannst du mir auch sagen was der Fehler bedeutet bzw. was ich da mache, dass ich auch etwas lerne und mir es merken kann?

Naja, der Fehler bedeutet eben, dass der Compiler nicht weiß, wo und wie er die Definition für den verwendeten Begriff (hier: Process) finden kann, weil ihm eine der Informationen 2 oder 3 (oder beide) fehlen.

Es handelt sich dann immer um dieselbe Formulierung:
Zitat:
Fehler 1 Der Typ- oder Namespacename "XXX" ist im Namespace "YYY" nicht vorhanden. (Fehlt ein Assemblyverweis?)


Jürgen


Man-Chro - Fr 05.12.08 10:56

user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Hallo,

diese Fehlermeldung (und natürlich ihre Beseitigung :wink: ) musst Du Dir unbedingt merken! Er ist bei Anfängern sehr verbreitet, kann aber auch ganz leicht beseitigt werden:

1. Gehe in die SDK-Doku/MSDN zu der Klasse, in diesem Fall "Process" unter "Informationen zur ...". Dort steht, welcher Namespace und welche DLL diese Klasse enthalten.

2. Unter using ist der korrekte Namespace einzubinden; bitte beachte, dass jeder Namespace eigenständig gilt und es sich nicht um eine hierarchische Gliederung handelt.

3. Unter Referenzen ist die DLL (Assembly) hinzuzufügen (sofern sie nicht, wie in diesem Fall, sowieso standardmäßig aufgeführt wird).

Jürgen


Hi Jürgen,

ich hab jetzt mal versucht das zu machen, doch es klappt nicht, wenn ich auf http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx gehe, find eich keine "Informationen zur ..." oder "Information ...".

Hast du einen anderen Link oder Download?


Grüße


JüTho - Fr 05.12.08 11:06

user profile iconMan-Chro hat folgendes geschrieben Zum zitierten Posting springen:
wenn ich auf http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx gehe, find eich keine "Informationen zur ..." oder "Information ...".

Puuuh, ist das Mitdenken denn so schwer? Ich benutze die offline-Version der deutschen Doku und gehe üblicherweise in den Index. Dort finde ich einen Hinweis "Informationen zur Xxx-Klasse".

Wenn Du direkt in die (englische) MSDN gehst, sieht es natürlich ein bisschen anders aus. Aber wenn ich auf die Seite in Deinem Link gehe, sehe ich ganz oben fett gedruckt die Wörter Namespace und Assembly, also dahinter genau die beiden Informationen, die ich in 2. und 3. angesprochen habe. Übernimm doch diese Angaben!!!

Jürgen