Làm cách nào để thay đổi hoặc chỉnh sửa giá trị đăng ký của người dùng khác so với người dùng hiện tại? Tôi biết thông tin đăng nhập của người dùng khác đó.Chỉnh sửa khoá đăng ký của người dùng khác
Trả lời
Bạn có thể mạo danh người dùng và sau đó thay đổi sổ đăng ký cho ngữ cảnh hiện tại đó. Dưới đây là một vài tài nguyên trên C# và Mạo danh:
using(var impersonation = new Impersonate(username,password))
{
ChangeRegistry(keys, values);
}
Và khi:
một cái gì đó như thế này (giả) Những gì bạn muốn làm là mạo danh được xử lý, bạn sẽ quay trở lại bằng cách sử dụng lại người dùng đang chạy. Here is an example implementation của lớp Mạo danh triển khai IDisposable để hoạt động giống như giả exampel được hiển thị ở trên và here is another example.
Here is an example vào cách bạn thay đổi giá trị registry:
var registry = Registry.CurrentUser;
var key =
registry.OpenSubKey(
@"HKEY_CURRENT_USER\Some\Path\That\You\Want\ToChange", true);
key.SetValue(null, "");
Registry.CurrentUser.Flush();
Cập nhật
Vì vậy, những gì bạn cần làm để truy cập HKCU
là bạn cũng phải nạp hồ sơ người dùng. Điều này được thực hiện bằng cách gọi phương thức Win32 khác được gọi là LoadUserProfile
. Có một complete example here mà bạn có thể sử dụng, nhưng tôi sẽ bao gồm các bit quan trọng ở đây.
Trước tiên, bạn cần phải bao gồm các phương pháp Win32 như thế này:
[DllImport("userenv.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool LoadUserProfile(IntPtr hToken,
ref ProfileInfo lpProfileInfo);
[DllImport("userenv.dll", CallingConvention = CallingConvention.Winapi,
SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool UnloadUserProfile(IntPtr hToken,
IntPtr lpProfileInfo);
Bên mạo danh của bạn sử dụng khối bạn cần phải làm như sau:
ProfileInfo profileInfo = new ProfileInfo();
profileInfo.dwSize = Marshal.SizeOf(profileInfo);
profileInfo.lpUserName = userName;
profileInfo.dwFlags = 1;
Boolean loadSuccess = LoadUserProfile(tokenDuplicate, ref profileInfo);
Và sau này, bạn sẽ có thể truy cập vào HKCU
. Khi bạn hoàn tất, bạn cần phải hủy hồ sơ bằng cách sử dụng UnloadUserProfile(tokenDuplicate, profileInfo.hProfile);
.
Bạn có hai tùy chọn. Bạn có thể mạo danh người dùng đó nếu bạn có thông tin đăng nhập của mình như Filip Ekberg thể hiện rõ hơn; hoặc
HKCU chỉ là một liên kết tượng trưng cho một trong các phím dưới HKEY_USERS
. Nếu bạn biết SID của người dùng đó, thì bạn có thể tìm thấy nó trong đó. Bạn có thể nhận được SID như vậy:
var account = new NTAccount("userName");
var identifier = (SecurityIdentifier)account.Translate(typeof(SecurityIdentifier));
var sid = identifier.Value;
Tùy chọn tốt hơn là mạo danh. Tùy chọn thứ hai có thể hoạt động tốt hơn khi bạn không biết thông tin đăng nhập của người dùng đó. Bất lợi là bạn sẽ cần quyền quản trị để viết vào tài khoản của người khác.
Sự mạo danh không hiệu quả, nhưng sid rất hữu ích nhưng tôi đã đụng độ với ngoại lệ truy cập trái phép, mặc dù UAC bị tắt và tôi là quản trị viên! –
@MSS, hãy thử yêu cầu quyền nâng cao. –
Nó làm việc, sai lầm của tôi là tôi đã mở chìa khóa để đọc !! lỗi: var key = Registry.Users.OpenSubKey (sid); bên phải là: var key = Registry.Users.OpenSubKey (sid. true); !!! –
- 1. Đăng ký người dùng CouchApp
- 2. Chỉnh sửa cảnh báo của người dùng khác cho một dự án trong TFS
- 3. Chỉnh sửa trang đăng ký woocommerce Đăng nhập
- 4. Đã đăng ký tại/appname /: Người dùng đã đăng ký
- 5. Làm cách nào để chỉnh sửa khóa đăng ký của một người dùng cụ thể theo chương trình?
- 6. Tắt chỉnh sửa người dùng trong JTable
- 7. asmack XMPP đăng ký người dùng mới
- 8. Trang khác cho người dùng đã đăng nhập và người dùng chưa đăng nhập tại gốc
- 9. Đăng ký người dùng duy nhất trên cơ sở emailid
- 10. hồ sơ người dùng khác nhau với django-profiles & django đăng ký
- 11. Cách tạo khóa đăng ký người dùng trong Delphi?
- 12. Chỉnh sửa Hồ sơ Người dùng w/Xác thực Mẫu
- 13. mantis đăng ký người dùng mới mà không cần email
- 14. Nhà máy không được đăng ký: người dùng
- 15. thiết lập bộ điều khiển đăng ký - người dùng không liên tục được đăng ký :: RegistrationsController
- 16. giỏ mua hàng cho người dùng chưa đăng ký
- 17. ứng dụng đăng ký django và mô hình người dùng tùy chỉnh Django 1.5
- 18. Làm thế nào để tự động đăng nhập người dùng sau khi đăng ký trong django
- 19. Đăng ký người dùng bằng xác minh email
- 20. Cách tốt nhất để đăng ký người dùng ở Django
- 21. Người dùng đăng ký với Oauth như thế nào?
- 22. Mailchimp API (.Net Wrapper) - Tự động đăng ký người dùng
- 23. Cách tắt đăng ký giao diện người dùng trong Magento
- 24. Django, đăng ký người dùng với tên và họ?
- 25. Gửi email kích hoạt khi người dùng mới đăng ký
- 26. FactoryGirl: Nhà máy chưa đăng ký: người dùng (ArgumentError)
- 27. PayPal Sửa đổi đăng ký - Tiêu chuẩn thanh toán
- 28. Rails 3 - Devise: Cách bỏ qua 'current_password' khi chỉnh sửa đăng ký?
- 29. Devise, OmniAuth & Facebook - Làm cách nào để cho phép người dùng chỉnh sửa mật khẩu?
- 30. iOS Cách cho phép người dùng đăng ký tài khoản/Cách tạo cơ sở dữ liệu của người dùng
Cảm ơn rất nhiều nhưng nó không hoạt động, nó đã thay đổi sổ đăng ký của người dùng hiện tại chứ không phải người dùng bị mạo danh! –
Bạn có chắc chắn rằng sự mạo danh đã diễn ra? Bạn có thể thử và in ra danh tính người dùng hiện tại và xem nó thực sự là ai. Ngoài ra, đây là ứng dụng ASP.NET và ứng dụng Windows? Nếu đó là một ứng dụng Web, bạn cần phải cho phép mạo danh. –
Không, nó là một ứng dụng WPF. sử dụng (ImpersonatedUser im = new ImpersonatedUser ("aaa", Environment.MachineName, "1")) { Registry.CurrentUser.CreateSubKey ("TMP10"); Registry.CurrentUser.Flush(); } Nó tạo khóa trong người dùng hiện tại nhưng không có trong 'aaa': ( –