Có cách nào để yêu cầu mã của tôi chạy như một người dùng khác không?Chạy Mã với tư cách người dùng khác (C#)
Tôi đang gọi NetUserSetInfo qua PInvoke và tôi cần gọi nó là người dùng khác. Có cách nào làm được việc này không?
Có cách nào để yêu cầu mã của tôi chạy như một người dùng khác không?Chạy Mã với tư cách người dùng khác (C#)
Tôi đang gọi NetUserSetInfo qua PInvoke và tôi cần gọi nó là người dùng khác. Có cách nào làm được việc này không?
Mạo danh đòi hỏi kêu gọi một số API gốc (cụ thể là, LogonUser) do đó, nó có lẽ không giá trị đăng 3 trang mã trình bao bọc. Trang này có một mẫu làm việc hoàn chỉnh: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/
Lưu ý rằng mạo danh có những cân nhắc bảo mật quan trọng. Đảm bảo bạn thực hiện theo các phương pháp hay nhất.
article này giải thích nó khá ngắn gọn:
Dưới đây là một đoạn mã từ bài viết:
IntPtr accessToken = IntPtr.Zero;
....
//You have to initialize your accessToken with API calling
....
WindowsIdentity identity = new WindowsIdentity(accessToken);
WindowsImpersonationContext context = identity.Impersonate();
...
// Now your code is using the new WindowsLogin and you can do what ever this login can do
...
//Now you can return to your current login of Windows
context.Undo();
Có lẽ tốt nhất và sạch nhất code mà tôi đã thấy cho đến nay là này
using (Impersonation.LogonUser(domain, username, password, logonType))
{
// do whatever you want as this user.
}
Điều này chắc chắn là dễ thực hiện nhưng tôi không thể xác thực rằng nó đang hoạt động. Tôi làm một process.start ("cmd.exe") và quá trình vẫn hiển thị như được sở hữu bởi ID mà bắt đầu chương trình không phải là ID mạo danh. Tôi có thể bỏ lỡ điều gì? –
Có Mạo danh giúp chạy một số mã với tư cách người dùng khác. Nó hoạt động tốt trong trường hợp của tôi. (Cảm ơn Milan Matějka)
Tôi cũng tìm thấy liên kết Ref. Hy vọng nó sẽ giúp bạn có được gói từ nuget dễ dàng: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html
Mã trong bài viết đã biến mất. –