Я пытаюсь предоставить доступ к параметрам реестра для своего приложения всем пользователям или машинам во время процесса установки.Настройка прав доступа к ключам реестра с использованием .NET
Мое приложение не имеет соответствующих разрешений непосредственно после установки, не требуя от администратора предоставления их, даже если ключи и значения существуют, они не могут быть обновлены? У меня есть фрагмент ниже, но установщик не работает из-за отказа в доступе/доступе к неавторизованному доступу. Я думаю, что я на правильном пути ...
Как разрешить проблему с разрешениями без ручного внимания? Есть ли лучший подход? Я пытаюсь заменить дополнительный установщик установкой 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);
}
}
я использовал свой фрагмент кода, чтобы сделать что-то подобное ... просто, чтобы вы знаете, , 'Registry.LocalMachine.OpenSubKey (key)' должен быть 'Registry.LocalMachine.OpenSubKey (key, true)' (где 'true' указывает, что ключ будет доступен для записи). Без этих изменений я запускал «UnauthorizedAccessExceptions». Благодаря! – Pwninstein
Спасибо за это, Pwninstein! Это спасло меня неисчислимые часы разочарования! –