Tôi muốn bắt đầu một chương trình khác chạy với tư cách người dùng từ một chương trình đang chạy với tư cách là quản trị viên.Bắt đầu quá trình với tư cách người dùng từ quá trình chạy với tư cách là quản trị viên
Vấn đề là chương trình thứ hai cần sử dụng triển vọng, điều này là không thể nếu chương trình chạy dưới dạng quản trị viên. Chương trình chính cần chạy với tư cách quản trị viên.
tôi đã đưa ra hai giải pháp này:
Process.Start("cmd.exe", @"/C runas.exe /savecred /user:" + Environment.UserDomainName + "\\" + Environment.UserName + " " + "\"SomeProgram.exe" + "\"");
hoặc
Process.Start("explorer.exe", "SomeProgram.exe");
Nhưng tôi có một vấn đề với cả hai giải pháp. Người đầu tiên yêu cầu người dùng nhập mật khẩu (chỉ lần đầu tiên sau khi các cửa sổ được khởi động lại). Người thứ hai không thể làm việc trong tương lai, bởi vì theo như tôi phát hiện ra nó được coi là một lỗi và có thể được sửa với bản cập nhật trong tương lai.
Vì vậy, tôi muốn biết có giải pháp nào khác, nơi người dùng không cần phải nhập mật khẩu của mình không?
Điều này dường như làm việc cho tôi:
Process.Start("cmd.exe", @"/C runas.exe /TrustLevel:0x20000 " + "\"SomeProgram.exe" + "\"");
Raymond Chen đã làm một công việc tốt của mô tả này trong [Làm thế nào tôi có thể khởi động một quá trình unelevated từ quá trình cao của tôi và ngược lại?] (Http://blogs.msdn.com/b/oldnewthing/archive/ 2013/11/18/10468726.aspx) (cũng bao gồm tất cả các loại chi tiết như khi độ cao sử dụng thông tin đăng nhập tài khoản khác nhau cho những người được sử dụng cho phần còn lại của phiên) –
Nhưng không phải đó chỉ là một cách khác để sử dụng exploer.exe để thực hiện công việc? Dù sao tôi tìm thấy một giải pháp khác, tôi đã thêm nó vào bài đăng gốc. – FKorni
Giải pháp của bạn có giải quyết chính xác với việc nâng cấp từ tài khoản quản trị của Alice sang tài khoản người dùng của Bob (sử dụng các ví dụ từ liên kết Raymonds) không? –