Я пытаюсь предоставить доступ к параметрам реестра для записи всем пользователям или всем пользователям машины во время процесса установки.
Мое приложение не имеет соответствующих разрешений непосредственно после установки, не требуя от администратора предоставить их, даже если ключи и значения существуют, они не могут быть обновлены? У меня есть фрагмент ниже, но установщик не работает из-за отказа в доступе/доступе к неавторизованному доступу. Я думаю, что я на правильном пути...
Как я могу разрешить проблему с разрешениями без ручного внимания? Есть ли лучший подход? Я пытаюсь заменить дополнительный установщик установкой Visual Studio, добавив эту функциональность.
protected void GrantAllAccessPermission(String key)
{
try
{
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
NTAccount account = sid.Translate(typeof(NTAccount)) as NTAccount;
// Get ACL from Windows, allow writing to the registry key
using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(key, true))
{
RegistrySecurity rs = new RegistrySecurity();
// Creating registry access rule for 'Everyone' NT account
RegistryAccessRule rar = new RegistryAccessRule(
account.ToString(),
RegistryRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow);
rs.AddAccessRule(rar);
rk.SetAccessControl(rs);
}
}
catch (System.Security.SecurityException ex)
{
throw new InstallException(
String.Format("An exception in GrantAllAccessPermission, security exception! {0}", key),
ex);
}
catch (UnauthorizedAccessException ex)
{
throw new InstallException(
String.Format("An exception in GrantAllAccessPermission, access denied! {0}", key),
ex);
}
}