Công cụ tôi phát triển cần cấp quyền truy cập "Kiểm soát hoàn toàn" cho một tệp được tạo bởi nó. Nó cần phải được đọc, sửa đổi và xóa khỏi tất cả các tài khoản windows và thậm chí cả các tài khoản trong tương lai. Điều này có thể đạt được không?Làm cách nào để cấp quyền đầy đủ cho một tệp do ứng dụng của tôi tạo cho TẤT CẢ người dùng?
Tôi biết tôi có thể thử điều này cho một SPECIFIC_USER:
FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow);
FileSecurity fSecurity = File.GetAccessControl(filePath);
fSecurity.SetAccessRule(rule);
File.SetAccessControl(filePath, fSecurity);
Nhưng làm thế nào để cấp nó cho tất cả người sử dụng? Và thậm chí cả các tài khoản trong tương lai có thể? Nếu phần sau là không thể, làm thế nào để đi về yêu cầu đầu tiên?
Cảm ơn.
EDIT:
Đây là mã làm việc cho tôi. Lấy từ liên kết của người trả lời.
private bool GrantAccess(string fullPath)
{
DirectoryInfo dInfo = new DirectoryInfo(fullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl,
InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,
PropagationFlags.NoPropagateInherit, AccessControlType.Allow));
dInfo.SetAccessControl(dSecurity);
return true;
}
Ghi chú số PropagationFlags.NoPropagateInherit
cần thiết (được đề cập đến cuối cùng trong liên kết). Nó cấp đặc quyền cho các tài khoản ngay cả trong tương lai.
Lưu ý với mọi người, không sử dụng "mọi người", thay vào đó sử dụng 'Trình bảo mật định danh mới (WellKnownSidType.WorldSid, null) 'trả về đối tượng SecurityIdentifier. Mọi người chỉ làm việc trên các cửa sổ tiếng Anh cài đặt, sử dụng phương pháp khác đảm bảo nó tương thích với nhiều phiên bản ngôn ngữ. –
@trukin bạn có thể làm cho câu trả lời không? thanks – nawfal
@nawfal: Tôi gặp vấn đề tương tự và tôi cần cấp quyền truy cập thư mục cài đặt của mình sau khi cài đặt ứng dụng, nhưng tôi có thể viết mã này ở đâu? –