Próbuję nadać prawu zapisu dostęp do ustawień rejestru mojej aplikacji wszystkim lub wszystkim użytkownikom komputera podczas procesu instalacji.Ustawianie uprawnień do zapisu klucza Rejestru przy użyciu .NET
Moja aplikacja nie ma odpowiednich uprawnień bezpośrednio po instalacji bez konieczności uzyskania uprawnień administratora, mimo że klucze i wartości istnieją, nie można ich zaktualizować? Mam poniższy fragment, ale instalator nie działa z powodu nieautoryzowanego dostępu/odmowy dostępu. Myślę, że jestem na dobrej drodze ...
Jak mogę rozwiązać problem uprawnień bez konieczności ręcznego sprawdzania? Czy istnieje lepsze podejście? Próbuję zastąpić dodatkowy instalator instalacją Visual Studio przez dodanie tej funkcji.
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);
}
}
użyłem swój fragment, aby osiągnąć coś podobnego ... po prostu pozwolić ci wiedzieć , 'Registry.LocalMachine.OpenSubKey (key)' powinno być 'Registry.LocalMachine.OpenSubKey (key, true)' (gdzie 'true' wskazuje, że klucz będzie można zapisać). Wystąpiłam w 'UnauthorizedAccessExceptions' bez tej zmiany. Dzięki! – Pwninstein
Dzięki za to, Pwninstein! Uratowało mnie to niezliczone godziny frustracji! –