Chúng tôi đang phát triển dịch vụ Windows C# .NET.Mạo danh người dùng
Dịch vụ của chúng tôi đang chạy trong tài khoản hệ thống và chúng tôi đang cố mạo danh người dùng đã đăng nhập USER. Tính mạo danh hoạt động ok, tức là khi gọi System.Security.Principal.WindowsIdentity.GetCurrent()
sau khi mạo danh, chúng tôi có được đúng người dùng 'USER'.
Vấn đề là khi chúng tôi cố gắng truy cập hồ sơ người dùng, chúng tôi không nhận được kết quả mong đợi. Một ví dụ là truy cập vào sổ đăng ký CURRENT_USER. Chúng tôi nhận được lỗi truy cập bị từ chối. Khi sử dụng chức năng của bên thứ ba, mà chúng tôi giả định sử dụng đăng ký một phần, chúng tôi nhận được chi tiết về người dùng "thực sự" (trước khi mạo danh). Ngoài ra khi gọi Environment.ExpandEnvironmentVariables("%TEMP%")
, chúng tôi sẽ nhận được hồ sơ hệ thống thay vì hồ sơ người dùng đã đăng nhập.
Có cách nào để mạo danh hoàn toàn người dùng khác không ?. Tôi biết chúng tôi có thể sử dụng LoadUserProfile để có được một hồ sơ người dùng cụ thể, nhưng điều này là không tốt cho chúng tôi, bởi vì chúng tôi đang chạy một dll bên thứ ba sử dụng hồ sơ người dùng hiện tại.
đang mạo danh của chúng tôi là dựa trên this
Trước hết, bạn nên sử dụng System.IO.Path.GetTempPath(); và nếu điều đó vẫn không hoạt động, đây có thể là vấn đề của bạn: http://stackoverflow.com/questions/944483/how-to-get-temporary-folder-for-current-user Xem câu trả lời được chấp nhận và cách thức hoạt động của nó. – lahsrah
hãy để tôi cụ thể hơn. chúng tôi đang sử dụng các cuộc gọi đến một dll của bên thứ ba mà chúng tôi không thể thay đổi. vì vậy nếu họ đang triển khai một hồ sơ người dùng cụ thể, chúng tôi phải thực hiện quy trình chạy với hồ sơ người dùng đó. – user844541
@ user844541 vui lòng đọc lại liên kết của tôi. – lahsrah