Frage

Ich versuche, einen Prozess als einen anderen Benutzer auszuführen, die Administrator-Berechtigung in 2 verschiedenen Computern unter Vista und ihre UAC aktiviert, aber in einem von ihnen, dass ich eine Win32Exception bekommen hat, das „der Verzeichnisname ist ungültig“

Kann mir jemand sagen, was mit meinem Code falsch ist?

var myFile = "D:\\SomeFolder\\MyExecutable.exe";
var workingFolder = "D:\\SomeFolder";
var pInfo = new System.Diagnostics.ProcessStartInfo();
pInfo.FileName = myFile;
pInfo.WorkingDirectory = workingFolder;
pInfo.Arguments = myArgs;
pInfo.LoadUserProfile = true;
pInfo.UseShellExecute = false;
pInfo.UserName = {UserAccount};
pInfo.Password = {SecureStringPassword};
pInfo.Domain = ".";

System.Diagnostics.Process.Start(pInfo);

UPDATE

Die Anwendung, die den obigen Code ausführt, hat requireAdministrator Ausführungsebene. Ich selbst gesetzt den Arbeitsordner auf "Path.GetDirectoryName (myFile)" und "New System.IO.FileInfo (myFile) .DirectoryName"

War es hilfreich?

Lösung 4

Es ist, weil die Pfadlänge der Datei 255 Zeichen überschreitet.

Andere Tipps

Sie müssen die WorkingDirectory Eigenschaft ProcessStartInfo` angeben. Aus Win32Exception Fehlercode 267 „der Verzeichnisname ist ungültig“

  

Im Moment arbeite ich an einem „automatisierten Ausführen als“ Werkzeug. Sein Ziel ist es   hilft Administratoren, die, wie ich, haben die Nutzer eine Möglichkeit zu geben, auszuführen   ein oder zwei Programme als Administrator und möchten, dies zu tun, ohne   mit einem Administrator-Passwort zu übergeben.

     

Also, ich auf Vista bin zu entwickeln und ich peitschte nur einen kleinen Beweis   Konzept Prototyp, das würde laufen calc.exe als ein anderer Benutzer, mit   Process und zu verarbeiten. Das funktionierte gut, wenn ich es ausgeführt als   ich (eine ziemlich sinnlose Übung, ich zugeben muß), aber wenn ich erstellt   ein neuer Benutzer und versucht, es als ihn laufen zu lassen, stieß ich auf ein   Win32Exception beschweren, dass der Verzeichnisname ist ungültig, nativer   Fehlercode 267. Ich war instsantly verwirrt, da ich von keinem gelieferten wusste   Verzeichnisnamen, die ungültig sein könnte. Getestet habe ich dann den Code auf einem XP   Maschine und es hat funktioniert!

     

fing ich an es googeln ohne Erfolg, viele Berichte über diesen Fehler, aber   keine schlüssige Lösung oder auf unterschiedliche Kontexten. Schließlich, nach einer   während es mir dämmerte, wurde die Angabe ich nicht die Working   Eigentum der Process Klasse, sobald ich die Zeilen

hinzugefügt      

Fileinfo fileinfo = new Fileinfo (path); startInfo.WorkingDirectory =   fileInfo.DirectoryName;

     

Zu meinem Code, war es erlaubt, Code auszuführen, wie anders als angemeldet   Benutzer. ...

Versuchen Sie ersetzen

pInfo.WorkingDirectory = New System.IO.FileInfo(myFile).DirectoryName;

mit

pInfo.WorkingDirectory = Path.GetDirectoryName(myFile);

Die Fileinfo einen Zugriff auf das Dateisystem, und ich würde nur der Admin-Benutzer hat in dieses Verzeichnis Zugriff übernehmen. Wenn es Ihr Problem nicht lösen, zumindest wird es Ihren Code ein klein wenig schneller machen ...

Ist das Verzeichnis des angemeldeten Benutzers des abgebildeten Home-Ordner oder unter dem? Als diese Knowledge Base-Artikel helfen können:

  

„der Verzeichnisname ist ungültig“ Fehlermeldung, wenn Sie Cmd.exe oder Notepad.exe starten, indem Sie das Ausführen als Feature in Windows

Update: Bitte beachten Sie, dass sein Mitglied der Lokale Administratoren Gruppe und mit Administratorrechten auf Vista nicht gleich sind.

Ich nehme an, dass alles funktioniert gut, wenn Sie Ihre C # Anwendung als Administrator ausführen. Rechtsklicken Sie auf die ausführbare Datei, und wählen Sie Als Administrator ausführen , oder die Anwendung von einer erhöhten Eingabeaufforderung starten (der schnellste Weg, um eins zu bekommen ist durch Drücken von Start , geben Sie ‚cmd ", gefolgt von Ctrl+Shift+Return).

Oder als Alternative deaktivieren UAC für das Konto, das Verfahren ausgeführt wird.

Es ist Platz in dem Ordnernamen fällig. Sobald ich den Raum entfernte es begann Datei zu arbeiten, wenn ich dieses Problem betroffen.

Ich hatte ein ähnliches Erlebnis und es stellte sich heraus, ein Problem mit unserer Entwicklungsumgebung sein. Wir bilden unser Quellcode-Verzeichnis zu einem virtuellen Laufwerk mit dem Befehl subst. So sind die Dateinamen und Working Eigenschaften wurden auf "W: \ SomeFolder \ FileName.exe"

Wenn ich hartcodiert den Filenamen & Working die Dateien über meine eigentliche Festplatte zugreifen (C :), hörte ich die „Invalid Directory“ Ausnahme erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top