2009-03-09 36 views
8

Tôi có một ứng dụng Windows Form mà cung cấp tên người dùng, tên miền, và mật khẩu cho StartInfo, và nó ném này:NET Process Bắt đầu Process Lỗi bằng các thông tin (The xử lý là không hợp lệ)

System.ComponentModel. Win32Exception: Tay cầm không hợp lệ tại System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo StartInfo) tại System.Diagnostics.Process.Start()

Khi tôi cho phép các chứng chỉ để mặc định cho người sử dụng hiện tại tôi nhận được không như vậy lỗi và quá trình tôi bắt đầu hoạt động ở mức độ mà nó không cần sử dụng thông tin đăng nhập (số tín dụng là n ecessary để ánh xạ một ổ đĩa trong một kịch bản MSBuild). Dưới đây là mã điền thông tin bắt đầu:

Process p = new Process(); 
ProcessStartInfo si = new ProcessStartInfo(buildApp, buildArgs); 
si.WorkingDirectory = msBuildWorkingDir; 
si.UserName = txtUserName.Text; 
char[] psw = txtPassword.Text.ToCharArray(); 
SecureString ss = new SecureString(); 
for (int x = 0; x < psw.Length; x++) 
{ 
    ss.AppendChar(psw[x]); 
} 
si.Password = ss; 
si.Domain = "ABC"; 
si.RedirectStandardOutput = true; 
si.UseShellExecute = false; 
si.WorkingDirectory = txtWorkingDir.Text; 
p.StartInfo = si; 
p.Start(); 

Nó không phải là người dùng/psw không khớp, bởi vì khi tôi cung cấp một psw xấu, ví dụ, nó bắt nó. Vì vậy, điều này "xử lý không hợp lệ" điều đang xảy ra sau khi cred được thông qua. Bất kỳ ý tưởng về những gì tôi có thể bỏ qua hoặc vặn lên?

Trả lời

19

Bạn phải chuyển hướng đầu vào, lỗi và đầu ra của mình.

ví dụ:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.UseShellExecute = false; 
info.RedirectStandardInput = true; 
info.RedirectStandardError = true; 
info.RedirectStandardOutput = true; 
info.UserName = dialog.User; 

using (Process install = Process.Start(info)) { 
     string output = install.StandardOutput.ReadToEnd(); 
     install.WaitForExit(); 
     // Do something with you output data  
    Console.WriteLine(output); 
} 

Cũng microsoft đã cho biết lỗi nên đọc, "Không thể chuyển hướng đầu vào." (đã từng có liên kết nhưng không còn hoạt động nữa)

+0

Chà, vâng. Tôi đã thiết lập RedirectStandardOutput thành true nhưng không phải là hai chuyển hướng khác. Tôi đặt hai cái kia thành true và sửa nó! Cảm ơn, @Chris Lively !! – Cyberherbalist

+0

Cảm ơn, đã nhận được khá bối rối bởi thông báo lỗi đó. – Cwoo

+0

Chúc mừng cho điều này - Tôi đã vui vẻ với điều này. –

Các vấn đề liên quan