Как использовать net user с c # - PullRequest
2 голосов
/ 28 марта 2012

Я пытаюсь использовать net user с c #

System.Diagnostics.ProcessStartInfo proccessStartInfo = new System.Diagnostics.ProcessStartInfo("net user " + id + " /domain");

proccessStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process {StartInfo = proccessStartInfo};
proc.Start();

string result = proc.StandardOutput.ReadToEnd();
textBoxOp.Text = result;

При выполнении кода Win32 возникает исключение с сообщением Системе не удается найти указанный файл

Подробности исключений:

в System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfo startInfo) в GetUserFromAD.Form1.GetInformation (идентификатор строки) в D: \ GetUserFromAD \ GetUserFromAD \ Form1.cs: строка 25 в GetUserFromAD.Form1.button_Click (Отправитель объекта, EventArgs e) в D: \ Ram \ MyC # \ GetUserFromAD \ GetUserFromAD \ Form1.cs: строка 35 в System.Windows.Forms.Control.OnClick (EventArgs e) в System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent) в System.Windows.Forms.Control.WmMouseUp (Message & m, MouseButtons кнопка, Int32 клики) в System.Windows.Forms.Control.WndProc (Message & m) в System.Windows.Forms.ButtonBase.WndProc (Message & m) в System.Windows.Forms.Button.WndProc (Сообщение & m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Сообщение & m)
в System.Windows.Forms.NativeWindow.DebuggableCallback (IntPtr hWnd, Интеллектуальные сообщения (Int32), IntPtr wparam) System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW (MSG & msg)
в System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop (Int32 dwComponentID, причина Int32, Int32 pvLoopData) в System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner (Int32 причина, контекст ApplicationContext) в System.Windows.Forms.Application.ThreadContext.RunMessageLoop (Int32 причина, контекст ApplicationContext) в GetUserFromAD.Program.Main () в D: \ Ram \ MyC # \ GetUserFromAD \ GetUserFromAD \ Program.cs: строка 18 в System.AppDomain._nExecuteAssembly (сборка сборки, аргументы String [])
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly ()
в System.Threading.ExecutionContext.Run (ExecutionContext executeContext, обратный вызов ContextCallback, состояние объекта) в System.Threading.ThreadHelper.ThreadStart ()

Ответы [ 3 ]

10 голосов
/ 28 марта 2012

net - это команда.Все, начиная с user, является аргументом команды.Таким образом, вам нужно использовать следующий конструктор:

System.Diagnostics.ProcessStartInfo proccessStartInfo = new System.Diagnostics.ProcessStartInfo("net", "user " + id + " /domain");

Кроме того , для захвата стандартного вывода вам необходимо установить следующие свойства перед вызовомproc.Start()

proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
2 голосов
/ 28 марта 2012

Вам необходимо указать путь к net.exe, который находится в системном каталоге (то есть windows \ system32).Например,

var proccessStartInfo = new System.Diagnostics.ProcessStartInfo(
    Path.Combine(Environment.SystemDirectory, "net.exe"), "user " + id + " /domain");

Также обратите внимание, что аргументы командной строки передаются в качестве второго параметра.

1 голос
/ 28 марта 2012
 System.Diagnostics.ProcessStartInfo proccessStartInfo = new System.Diagnostics.ProcessStartInfo("cmd", "net user " + id + "/domain");
...