30/09/2018, 23:39

Lỗi "The security identifier is not allowed to be the owner of this object." khi get registry value

Chào mọi người, em đang làm một dự án có dính tới việc get registry value để biết đường dẫn tới thư mục của phần mềm đó nhưng mà điều em đang thắc mắc ở đây là lúc trước em dùng đường dẫn tĩnh (tức là truy thằng tới thư mục của phần mềm đó trong C:Program Files) thì mọi chuyện vẫn bình thường, cho tới khi có ý định get registry (để cho nó linh hoạt hơn) thì em lại bị dính cái lỗi này.
“The security identifier is not allowed to be the owner of this object.”
đã search Google và cũng sửa theo nhiều cách nhưng vẫn không được

Đây là code get registry value của em

public string getRegistryValue(string subkey,string keyName)
{
    try
    {
        string user = string.Format("{0}\{1}", Environment.UserDomainName, Environment.UserName);
        RegistryKey key = Registry.LocalMachine.OpenSubKey(subkey,Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.ChangePermissions | RegistryRights.ReadKey);
        RegistrySecurity rs = new RegistrySecurity();
        rs.AddAccessRule(new RegistryAccessRule(user,
            RegistryRights.ReadKey | RegistryRights.Delete,
            InheritanceFlags.None,
            PropagationFlags.None,
            AccessControlType.Allow));
        key.SetAccessControl(rs);
        key = Registry.LocalMachine.OpenSubKey(subkey, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl);
        rs.SetOwner(new NTAccount(user));
        key.SetAccessControl(rs);
        if (key != null)
            {
                string KeyValue = (string)key.GetValue(keyName);
                return KeyValue;
            }
    }
    catch (Exception ex)  //just for demonstration...it's always best to handle specific exceptions
    {
        MessageBox.Show(ex.Message);
    }
    return null;
}
Bài liên quan
0