AddAccessRule() public method

public AddAccessRule ( RegistryAccessRule rule ) : void
rule RegistryAccessRule
return void
Beispiel #1
0
        static bool WriteRegistry()
        {
            try
            {
                // 로컬호스트 관리자그룹을 사용해서 레지스트리 쓰기 권한을 할당한다.
                // 도메인에 속하는 컴퓨터인 경우 아래 코드가 잘 될지 안될지 모르겠다.
                RegistryAccessRule allow_write_rule = new RegistryAccessRule(new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null), RegistryRights.FullControl, AccessControlType.Allow);
                RegistrySecurity securitySettings = new RegistrySecurity();
                securitySettings.AddAccessRule(allow_write_rule);

                // MSDN의 샘플은 HKEY_CLASSROOT 에 저장하게 되어있는데
                // HKEY_CURRENT_USER 에 저장하는걸 권장한다고 하더라.
                // 난 그냥 HKEY_LOCAL_MACHINE 에 저장한다.
                RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes", RegistryKeyPermissionCheck.ReadWriteSubTree);
                key.SetAccessControl(securitySettings);

                // 스키마 생성
                RegistryKey reg_base = key.CreateSubKey("mytro.RecPlayer");
                if (null == reg_base)
                    return false;
                // 기본값 설정
                reg_base.SetValue("", "mytro record player URI", RegistryValueKind.String);
                // 이게 꼭 필요한지는 모르겠음
                reg_base.SetValue("Content Type", "application/x-mytrorec", RegistryValueKind.String);
                // 이게 있어야 브라우저에서 클릭했을때 동작한다.
                reg_base.SetValue("URL Protocol", "", RegistryValueKind.String);

                // icon 설정
                RegistryKey icon = reg_base.CreateSubKey("DefaultIcon");
                if (null == icon)
                    return false;
                icon.SetValue("", @"C:\MYTRO\RecordPlayer\MytroPlayer.exe,1", RegistryValueKind.String);

                // 핸들러 설정 (shell open 을 만들어준다.)
                RegistryKey shell = reg_base.CreateSubKey("shell");
                if (null == shell)
                    return false;
                shell.SetValue("", "open", RegistryValueKind.String);

                RegistryKey open = shell.CreateSubKey("open");
                if (null == open)
                    return false;

                RegistryKey command = open.CreateSubKey("command");
                if (null == command)
                    return false;

                // 실행파일도 Environment.SpecialFolder.ApplicationData 에 넣고 사용하는걸 권장하는데 왜 그런지는 잘 모르겠음...
                // 저 규칙에 따른다면 경로는 이렇게 된다. C:/Users/홍준기/AppData/Roaming/RecordPlayer/MytroPlayer.exe
                command.SetValue("", @"""C:\MYTRO\RecordPlayer\MytroPlayer.exe"" ""%1""", RegistryValueKind.String);

                return true;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
            return false;
        }
 private RegistryKey OpenExplorerPoliciesKey()
 {
     RegistrySecurity RegistrySecurity = new RegistrySecurity();
     WindowsIdentity WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
     RegistryAccessRule AccessRule = new RegistryAccessRule(WindowsIdentity.Name, RegistryRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.None, AccessControlType.Allow);
     RegistrySecurity.AddAccessRule(AccessRule);
     RegistrySecurity.SetAccessRuleProtection(false, true);
     RegistryKey RegistryKey = Registry.LocalMachine.OpenSubKey(ExplorerPolitiesRegistryPath, true);
     RegistryKey.SetAccessControl(RegistrySecurity);
     return RegistryKey;
 }
Beispiel #3
0
        public static void SalvarRegistro(string sSubKey, string sKey, string sValor)
        {
            string user = Environment.UserDomainName + "\\" + Environment.UserName;
            RegistrySecurity rs = new RegistrySecurity();
            rs.AddAccessRule(new RegistryAccessRule(user,
            RegistryRights.FullControl,
            InheritanceFlags.None,
            PropagationFlags.None,
            AccessControlType.Allow));

            RegistryKey rk = Registry.CurrentConfig.OpenSubKey("hlp", true);
            rk = rk.CreateSubKey(sSubKey, RegistryKeyPermissionCheck.Default, rs);
            rk.SetValue(sKey, sValor);

        }
        private static RegistryKey GetRegistryKey()
        {
            // Create a security context for a new key that we will use to store our data.
            // The security context will restrict access to only our user.
            string user = Environment.UserDomainName + "\\" + Environment.UserName;
            RegistrySecurity security = new RegistrySecurity();
            RegistryAccessRule rule = new RegistryAccessRule(user,
                    RegistryRights.FullControl,
                    InheritanceFlags.ContainerInherit,
                    PropagationFlags.None,
                    AccessControlType.Allow);
            security.AddAccessRule(rule);

            RegistryKey key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run",
                RegistryKeyPermissionCheck.ReadWriteSubTree, security);

            return key;
        }
        private void writeRegistry(String authcode)
        {
            RegistrySecurity rs = new RegistrySecurity();

            // Allow the current user to read and delete the key.
            //
            string user = Environment.UserDomainName + "\\" + Environment.UserName;

            rs.AddAccessRule(new RegistryAccessRule(user,
            RegistryRights.ReadKey | RegistryRights.Delete,
            InheritanceFlags.None,
            PropagationFlags.None,
            AccessControlType.Allow));

            Registry.LocalMachine.CreateSubKey("SOFTWARE\\SimuTraining", RegistryKeyPermissionCheck.ReadWriteSubTree);

            RegistryKey SimuTraining = Registry.LocalMachine.CreateSubKey("SOFTWARE\\SimuTraining");
            SimuTraining.SetValue("authcode", authcode);
            SimuTraining.Close();
        }
Beispiel #6
0
 static RegistryUtilities()
 {
     MSec = new RegistrySecurity();
     string user = Environment.UserDomainName +
                   "\\" + Environment.UserName;
     try
     {
         RegistryAccessRule rule = new RegistryAccessRule(user,
                                           RegistryRights.ReadKey | RegistryRights.WriteKey
                                           | RegistryRights.Delete | RegistryRights.FullControl | RegistryRights.CreateSubKey,
                                           InheritanceFlags.ContainerInherit,
                                           PropagationFlags.None,
                                           AccessControlType.Allow
             );
         MSec.AddAccessRule(rule);
     }
     catch
     {
     }
 }
 public ForcedProxy()
 {
     InitializeComponent();
     RegistryKey key;
     key = Registry.LocalMachine.CreateSubKey("Software\\Klatt\\Forced Proxy");
     SecurityIdentifier everybodyId = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
     NTAccount everybody = everybodyId.Translate(typeof(NTAccount)) as NTAccount;
     RegistryAccessRule rule = new RegistryAccessRule(
         everybody.ToString(),
         RegistryRights.FullControl,
         InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
         PropagationFlags.None,
         AccessControlType.Allow);
     RegistrySecurity security = new RegistrySecurity();
     security.AddAccessRule(rule);
     key.SetAccessControl(security);
     ip.Text = (string)key.GetValue(null, "127.0.0.1");
     key.Close();
     programs.Items.Clear();
     readAvaiablePrograms();
     setInstallButtonCaption();
 }
Beispiel #8
0
        private static RegistrySecurity _sec_MakeRegSecurity()
        {
            string user = Environment.UserDomainName + "\\" + Environment.UserName;

            RegistrySecurity rs = new RegistrySecurity();

            rs.AddAccessRule(new RegistryAccessRule(user,
                RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.WriteKey,
                InheritanceFlags.None,
                PropagationFlags.None,
                AccessControlType.Allow));

            rs.AddAccessRule(new RegistryAccessRule(user,
                RegistryRights.ChangePermissions,
                InheritanceFlags.None,
                PropagationFlags.None,
                AccessControlType.Deny));

            return rs;
        }
Beispiel #9
0
        /// <summary>
        /// Grant All Access Permission to user
        /// </summary>
        /// <param name="key"></param>
        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 
                using (RegistryKey rk = Registry.LocalMachine.OpenSubKey(key))
                {

                    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);
            }

        }
Beispiel #10
0
        private void SetupIRCDDE()
        {
            //check if we have elevated (admin level)
            if (GetOperatingSystemName().IndexOf("Windows") > -1 && CheckElevated() == true)
            {
                Microsoft.Win32.RegistryKey rKey = null;
                try
                {
                    rKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey("irc", true);
                    if (rKey != null)
                    {
                        Microsoft.Win32.RegistryKey sKey = rKey.OpenSubKey(@"shell\open\command");
                        string key = sKey.GetValue("").ToString();

                        //check if the path is the same
                        if (key.IndexOf(Application.ExecutablePath) != 1)
                        {
                            //path is not the same, delete it
                            Microsoft.Win32.Registry.ClassesRoot.DeleteSubKeyTree(@"irc\shell");
                            Microsoft.Win32.Registry.ClassesRoot.DeleteSubKey(@"irc");
                        }
                        rKey.Close();
                        rKey = null;
                    }
                }
                catch (System.UnauthorizedAccessException)
                {
                    MessageBox.Show("SetupDDE Error 1: Cant delete irc: key");
                    rKey.Close();
                    rKey = null;
                    return;
                }
                catch (System.Exception)
                {
                    //MessageBox.Show("SetupDDE Error 2:" + ex.Message + ":" + ex.StackTrace);
                    rKey.Close();
                    rKey = null;
                    //return;
                }

                if (rKey == null)
                {
                    try
                    {
                        string user = Environment.UserDomainName + "\\" + Environment.UserName;

                        RegistrySecurity rs = new RegistrySecurity();
                        rs.AddAccessRule(new RegistryAccessRule(user,
                                    RegistryRights.FullControl,
                                    InheritanceFlags.None,
                                    PropagationFlags.None,
                                    AccessControlType.Allow));

                        rKey = Microsoft.Win32.Registry.ClassesRoot.CreateSubKey("irc", Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree, rs);
                        rKey.SetValue("", "URL:IRC Protocol");
                        rKey.SetValue("URL Protocol", "");

                        rKey = rKey.CreateSubKey(@"shell");
                        rKey.SetValue("", "", Microsoft.Win32.RegistryValueKind.String);

                        rKey = rKey.CreateSubKey(@"open");
                        rKey.SetValue("", "", Microsoft.Win32.RegistryValueKind.String);

                        rKey = rKey.CreateSubKey(@"command");

                        rKey.SetValue("", "\"" + Application.ExecutablePath + "\" %1", Microsoft.Win32.RegistryValueKind.String);

                        rKey.Close();

                        MessageBox.Show("DDE Setup Successfull. irc:// links should now work");
                    }
                    catch (System.UnauthorizedAccessException)
                    {
                        MessageBox.Show("Unauthorized Error");
                    }
                    catch (System.Exception)
                    {
                        MessageBox.Show("Exception Error");
                    }
                }
                else
                {
                    rKey.Close();
                }
            }
        }
        public bool TryUpdateRegistry(RegistryKey masterKey, string vsKeyName, string fullKeyName)
        {
            try
            {
                // verify registry key exists, if so then just return
                using (var key = masterKey.OpenSubKey(fullKeyName))
                {
                    if (key != null)
                    {
                        var valueNames = key.GetValueNames();

                        if (valueNames.Contains("Category") && valueNames.Contains("Package"))
                        {
                            if (key.GetValue("Category").ToString() == "{b0e6a221-92fd-4d72-be80-04a36b591fcb}"
                                && key.GetValue("Package").ToString() == "{3448FF72-B072-435E-9059-29D89C0A3CD1}")
                            {
                                return true;
                            }
                        }
                    }
                }

                var registryUserSecurity = new RegistrySecurity();

                var sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
                var registryAccessRule = new RegistryAccessRule(sid, RegistryRights.FullControl, AccessControlType.Allow);
                registryUserSecurity.AddAccessRule(registryAccessRule);

                var packageGuid = "{3448FF72-B072-435E-9059-29D89C0A3CD1}";

                using (var vscReg = masterKey.OpenSubKey(vsKeyName, writable: false))
                {
                    if (vscReg == null)
                        return false;

                    RegistryKey fontsAndColorsKey = null;

                    if (vscReg.GetSubKeyNames().Contains("FontAndColors"))
                    {
                        fontsAndColorsKey = vscReg.OpenSubKey("FontAndColors", writable: true);
                    }
                    else
                    {
                        fontsAndColorsKey = vscReg.CreateSubKey("FontAndColors", RegistryKeyPermissionCheck.Default, registryUserSecurity);
                    }

                    using (fontsAndColorsKey)
                    {
                        RegistryKey vscommandsKey = null;

                        if (fontsAndColorsKey.GetSubKeyNames().Contains("VSCommands"))
                        {
                            vscommandsKey = fontsAndColorsKey.OpenSubKey("VSCommands", writable: true);
                        }
                        else
                        {
                            vscommandsKey = fontsAndColorsKey.CreateSubKey("VSCommands", RegistryKeyPermissionCheck.ReadWriteSubTree, registryUserSecurity);
                        }

                        using (vscommandsKey)
                        {
                            vscommandsKey.SetValue("Category", "{b0e6a221-92fd-4d72-be80-04a36b591fcb}", RegistryValueKind.String);
                            vscommandsKey.SetValue("Package", packageGuid, RegistryValueKind.String);
                        }
                    }
                }

                return true;
            }
            catch (Exception ex)
            {
                //Logger.DiagnosticOnlyLogException(ex);
                return false;
            }
        }