2010-11-05 83 views

Trả lời

0

tôi tìm thấy nó, tôi cần phải đặt Scheduled Task để chạy các ứng dụng với quyền cao nhất trong Cài đặt chung.

9

Tôi vừa cố gắng sử dụng:

Process p = new Process(); 
p.StartInfo.Verb = "runas"; 

này hoạt động tốt nếu tôi đang chạy chương trình của tôi as Administrator, nhưng khi Scheduled Task chạy nó, nó không lấy 'runas' trong xem xét tôi nghĩ.

+0

Yepaaah. Giải pháp tuyệt vời. Cám ơn vì đã chia sẻ. bạn đã làm cho ngày của tôi! – Nasenbaer

2

Nếu bạn đang sử dụng các tác vụ đã lên lịch, bạn có thể đặt người dùng và mật khẩu cho tác vụ chạy dưới.

Sử dụng thông tin xác thực của quản trị viên về tác vụ và bạn sẽ ổn.

Với Process.Start, bạn cần phải cung cấp các UserNamePassword cho ProcessStartInfo:

Process p = new Process("pathto.exe"); 
p.StartInfo.UserName = "Administrator"; 
p.StartInfo.Password = "password"; 
p.Start(); 
4

Tùy chọn bảo mật tốt hơn để chạy quy trình có đăng nhập và mật khẩu là sử dụng lớp SecureString để mã hóa mật khẩu. Đây là mẫu mã:

string pass = "yourpass"; 
string name ="login"; 
SecureString str; 
ProcessStartInfo startInfo = new ProcessStartInfo(); 
char[] chArray = pass.ToCharArray(); 
fixed (char* chRef = chArray) 
{ 
    str = new SecureString(chRef, chArray.Length); 
} 
startInfo.Password = str; 
startInfo.UserName = name; 
Process.Start(startInfo); 

Bạn phải cho phép mã không an toàn trong thuộc tính dự án của mình.

Hy vọng trợ giúp này.

1

Lưu ý rằng việc lưu trữ mật khẩu bằng văn bản rõ ràng trong một chương trình sẽ không bao giờ an toàn miễn là ai đó có thể kiểm tra ứng dụng và xem nội dung trong đó. Việc sử dụng SecureString để chuyển đổi mật khẩu đã lưu trữ thành mật khẩu SecureString không làm cho mật khẩu an toàn hơn, vì mật khẩu văn bản rõ ràng vẫn có mặt.

Cách tốt nhất để sử dụng SecureString là chuyển một ký tự duy nhất để chuyển đổi tại một thời điểm nào đó mà không yêu cầu phải có mật khẩu chưa được mã hóa hoàn toàn ở bất kỳ đâu trong bộ nhớ hoặc trên ổ cứng. Sau khi nhân vật đó được chuyển đổi, chương trình nên quên nó, và sau đó chuyển sang phần tiếp theo.

Điều này có thể được thực hiện Tôi chỉ nghĩ rằng bằng cách chuyển các ký tự thông qua để dịch khi chúng đang được nhập vào bảng điều khiển của người dùng.