myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
   » Plugin für Firefox
   » Plugin für IE7
   » Gadget für Vista
» Regeln
» Wie poste ich richtig?
» Datenschutzerklärung
» wbb-FAQ

Mitglieder
» Liste / Suche
» Stadt / Anleitung dazu
» Wer ist wo online?

Angebote
» ASP.NET Webspace
» Bücher
» Zeitschriften
   » dot.net magazin
» Accessoires

Ressourcen
» .NET-Glossar
» guide to C#
» openbook: Visual C#
» openbook: OO
» .NET BlogBook
» MSDN Webcasts
» dotnetjob.de
» Search.Net

Team
» Kontakt
» Übersicht
» Wir über uns
» Bankverbindung
» Impressum

» Unsere MiniCity
MiniCity
» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Basistechnologien und allgemeine .NET-Klassen » Starten von exe Datei aus System 32 Verzeichnis...
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Starten von exe Datei aus System 32 Verzeichnis...

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Renator
myCSharp.de-Mitglied

Dabei seit: 07.07.2011
Beiträge: 28


Renator ist offline

Starten von exe Datei aus System 32 Verzeichnis...

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich versuche mich seit ein paar Tagen in c# reinzuarbeiten. Für den Anfang würde ich mir gerne ein kleines Tool schreiben mit den wichtigsten Funktionen die ich so verwende.
Unter anderem würde ich gerne das Snipping Tool von Windows 7 über einen Knopfdruck starten.

Ich HÄTTE mir das so vorgestellt:

C#-Code:
            string pgm = @"\system32\SnippingTool.exe";
            string windir = Environment.GetEnvironmentVariable("SystemRoot");
            string start =  windir+pgm;
            System.Diagnostics.Process.Start(start);

Aber das mag er mir nicht ausführen. Mit der Begründung: Das System kann die angegebene Datei nicht finden.
Nur... sie ist genau da, wo die Variable Start angibt.

Ich vermute, dass nicht einfach jedes x-beliebige Programm Dateien aus dem System32 Verzeichnis ausführen darf... jemand eine Idee?

Danke!
07.07.2011 16:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
bredator bredator ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-155.gif


Dabei seit: 08.09.2010
Beiträge: 204
Entwicklungsumgebung: VS 2008 Pro, VS 2010 Pro


bredator ist online

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hab hier auf der Arbeit leider nur einen XP Rechner, daher kein Snippingtool und auch keine UAC etc.

Allerdings mit regedt32.exe habe ich hier keinerlei Probleme. Evtl. mal unter den Projekteinstellungen -> Sicherheit -> Voll vertrauenswürdige Anwendung nachschauen?

Da es ansonsten unter XP geht, vermute ich aber ein Sicherheitsfeature von Win7... gemäß dem Fall, die Exe liegt wirklich da.
07.07.2011 16:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Renator
myCSharp.de-Mitglied

Dabei seit: 07.07.2011
Beiträge: 28

Themenstarter Thema begonnen von Renator

Renator ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke erst einmal. Ändert leider nichts. Geht nicht.
07.07.2011 17:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 8.482


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und was steht da in start?

Auch baut man dateinamen nicht so zusammen, benutze Path.Combine
07.07.2011 17:48 Beiträge des Benutzers | zu Buddylist hinzufügen
Blacal Blacal ist männlich
myCSharp.de-Mitglied

images/avatars/avatar-3283.gif


Dabei seit: 10.03.2005
Beiträge: 387
Entwicklungsumgebung: Visual Studio 2012 Pro
Herkunft: Weiden in der Oberpfalz


Blacal ist offline Füge Blacal Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

ich würde Environment.GetFolderPath(..) verwenden. Lass dir mal ausgeben, worauf dein Pfad zeigt.. ich vermute mal stark, dass der falsch ist. Wäre es ein Berechtigungsproblem, so würde er einen anderen Fehler bringen.

Gruß
Roland

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Blacal am 07.07.2011 19:34.

07.07.2011 19:34 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Gorbatschow
myCSharp.de-Mitglied

Dabei seit: 06.07.2011
Beiträge: 1


Gorbatschow ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Schau dich mal in der Rechteverwaltung um.
Hab alle Rechte mal vergeben. Hat auch nichts gebracht.
Ich kenn mich nicht gut mit TrustedInstaller aus aber soweit ich weis schützt er vor ungewolltem Zugriff.
In der Rechteverwaltung sitzt er auch mit drinnen.

Die Datei wird zudem auch nicht in einem OpenFileDialog gefunden.

Den Pfad würde ich so zusammenstellen.
Path.Combine ist mir nicht der richtige Weg, da ich der Methode einen string übergeben muss.

string pfad = Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\SnippingTool.exe";


mycsharp.de  Moderationshinweis von herbivore (08.07.2011 09:12):

Dass du an Path.Combine einen String (üblicherweise zwei Strings) übergeben musst, ist kein Gegenargument, da du ja genau diese Strings hast. Auch Environment.GetFolderPath liefert einen String. Path.Combine ist anerkannt der richtige Weg und sollte (auch hier wie überall) verwendet werden.
 
07.07.2011 21:44 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Renator
myCSharp.de-Mitglied

Dabei seit: 07.07.2011
Beiträge: 28

Themenstarter Thema begonnen von Renator

Renator ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

sorry, gestern keine Zeit mehr. Also die Variable wo rauskommt passt. Wenn ich diese so in den Explorer kopiere, kann ich das Snipping Tool ganz normal starten.

Irgendein anderer Workaround fällt sonst auch niemandem ein oder? Vielleicht gibt es ja noch irgendeinen speziellen Windows Befehl um das Snipping Tool gleich zu starten?
08.07.2011 12:00 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
herbivore
myCSharp.de-Team (Admin)

images/avatars/avatar-2627.gif


Dabei seit: 11.01.2005
Beiträge: 47.487
Entwicklungsumgebung: csc/nmake (nothing is faster)
Herkunft: Berlin


herbivore ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Renator,

unter Windows 7 heißen nicht alle Verzeichnisse so, wie der Explorer sie anzeigt. Das wäre eine mögliche Ursache. Du kannst das Fenster "Eingabeaufforderung" verwenden, um (z.B. mit dem Befehl "dir") nachzuschauen, wie die Verzeichnisse wirklich heißen.

herbivore
08.07.2011 12:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Renator
myCSharp.de-Mitglied

Dabei seit: 07.07.2011
Beiträge: 28

Themenstarter Thema begonnen von Renator

Renator ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ja, sie heißen genau so wie es die Variable hergibt. Leider.

Ich vermute schwer, dass es wirklich irgend etwas mit den Rechten zu tun hat.

Beim Debuggen kommt zwar:
"System.ComponentModel.Win32Exception (0x80004005): Das System kann die angegebene Datei nicht finden"
aber es passt sonst alles!

Achso die Variable von Start: c:\\Windows\\system32\\SnippingTool.exe

Aus der DOS-Box kann ich es auch direkt starten!
08.07.2011 13:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Zwischen diesen beiden Beiträgen liegen mehr als 11 Monate.
SeCuRiiTaS
myCSharp.de-Mitglied

Dabei seit: 12.03.2012
Beiträge: 108


SeCuRiiTaS ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,
muss das Thema einmal nach oben holen.

Habe mir eine Windows Forms Anwendung gebastelt, mit der ich gerne einen Befehl ausführen möchte.

Der Pfad ist definitiv korrekt, denn wenn ich diesen im Windows Explorer angebe, öffnet sich meine Exe.

Bekomme allerdings die Fehlermeldung:

Fehlermeldung:
Das System kann die angegebene Datei nicht finden

Kann doch nicht wahr sein! Bei meinem Nachbarn am anderen PC klappt es einwandfrei mit 1:1 dem gleichen Code und der Datei im system32 Ordner.

Woran könnte das liegen?

C#-Code:
public static void SendMessage(string rechnername, string nachricht)
        {
            Process proc = new Process();

            proc.StartInfo.FileName = Environment.SystemDirectory + @"\PsExec.exe";
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.Arguments = "\\" + rechnername + " -i msg * " + nachricht;

            proc.Start();
            proc.WaitForExit();
            proc.Close();
        }

FileName = C:\\Windows\\system32\\PsExec.exe

//edit: wenn ich cmd.exe eingebe, die im gleichen verzeichnis liegt, findet er diese. Schon komisch

SeCuRiiTaS hat dieses Bild angehängt:

bild.jpg

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von SeCuRiiTaS am 14.06.2012 10:00.

14.06.2012 09:41 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
FZelle
myCSharp.de-Poweruser/ Experte

Dabei seit: 23.04.2004
Beiträge: 8.482


FZelle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Und du hast nicht zufällig W7 64Bit?
14.06.2012 10:09 Beiträge des Benutzers | zu Buddylist hinzufügen
SeCuRiiTaS
myCSharp.de-Mitglied

Dabei seit: 12.03.2012
Beiträge: 108


SeCuRiiTaS ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Genau das hab ich eben auch bemerkt und auf "Any CPU" gestellt statt "x86". Jetzt klappt es auch.
14.06.2012 10:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als 11 Monate.
Antwort erstellen


© Copyright 2003-2013 myCSharp.de-Team. Alle Rechte vorbehalten. 22.05.2013 11:50