Ejemplo n.º 1
0
        /// <summary>
        /// Save a single session to the stream
        /// </summary>
        /// <param name="s">The session to save</param>
        /// <param name="sw"></param>
        /// <returns>true if sucessful, false otherwise</returns>
        private bool saveSession(Session s, StreamWriter sw)
        {
            RegistryKey rk = Registry.CurrentUser.OpenSubKey(PUTTY_SESSIONS_REG_KEY + "\\" + s.SessionKey);

            if (rk != null)
            {
                sw.WriteLine("[" + Registry.CurrentUser.Name + "\\" + PUTTY_SESSIONS_REG_KEY + "\\" + s.SessionKey + "]");
            }
            else
            {
                return(false);
            }
            foreach (string valueName in rk.GetValueNames())
            {
                RegistryValueKind valueKind = rk.GetValueKind(valueName);
                if (valueKind.Equals(RegistryValueKind.String))
                {
                    sw.WriteLine("\"" + valueName + "\"=\"" + rk.GetValue(valueName).ToString().Replace("\\", "\\\\") + "\"");
                }
                else if (valueKind.Equals(RegistryValueKind.DWord))
                {
                    Object o   = rk.GetValue(valueName);
                    string hex = ((int)o).ToString("x8");
                    sw.WriteLine("\"" + valueName + "\"=dword:" + hex);
                }
            }
            sw.WriteLine();
            rk.Close();
            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get registry value, which is expected to be a string
        /// </summary>
        /// <param name="keyName">Registry Key Name</param>
        /// <param name="valName">Registry Value Name</param>
        /// <returns>Registry value</returns>
        /// <exception cref="ArgumentNullException">If <paramref name="valName"/> is null</exception>
        /// <exception cref="InvalidDataException">If some problem with the registry value</exception>
        internal static string GetRegistryStringValue(string keyName, string valName)
        {
            const string MethodName = "GetRegistryStringValue";

            // argument check
            if (keyName == null)
            {
                keyName = string.Empty;
            }

            if (valName == null)
            {
                throw new ArgumentNullException("valName");
            }

            RegistryKey regKey = Registry.LocalMachine.OpenSubKey(keyName, false);

            try {
                if (regKey != null)
                {
                    object val = regKey.GetValue(valName);
                    if (val != null)
                    {
                        RegistryValueKind regType = regKey.GetValueKind(valName);
                        if (!regType.Equals(RegistryValueKind.String))
                        {
                            throw new InvalidDataException(String.Format(
                                                               CultureInfo.CurrentCulture,
                                                               "Invalid Registry data type, key name: {0} value name: {1} should be String",
                                                               keyName,
                                                               valName));
                        }

                        return(Convert.ToString(val, CultureInfo.CurrentCulture));
                    }
                    else
                    {
                        throw new InvalidDataException(String.Format(
                                                           CultureInfo.CurrentCulture,
                                                           "Missing value for key name: {0} value name: {1}",
                                                           keyName,
                                                           valName));
                    }
                }
                else
                {
                    throw new InvalidDataException(String.Format(
                                                       CultureInfo.CurrentCulture,
                                                       "Unable to open registry for key: {0}",
                                                       keyName));
                }
            } finally {
                if (regKey != null)
                {
                    regKey.Close();
                }
            }
        }
Ejemplo n.º 3
0
        //Write Registry Value
        public bool RegistryWriter(string subKey, string keyName, string keyValue, RegistryValueKind valueType)
        {
            try
            {
                RegistryPermission regeditPermission = new RegistryPermission(RegistryPermissionAccess.AllAccess, System.IO.Path.Combine(Registry.CurrentUser.ToString(), System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH, subKey)));
                regeditPermission.Demand();
                RegistryKey regeditWrite = Registry.CurrentUser;
                //regeditWrite.SetAccessControl(regeditUserRuls);
                regeditWrite = regeditWrite.OpenSubKey(System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH, subKey), true);
                if (regeditWrite != null)
                {
                    if (valueType.Equals(RegistryValueKind.Binary))
                    {
                        regeditWrite.SetValue(keyName, RegeditNecessaryFunction.ToByteArray(keyValue), RegistryValueKind.Binary);
                        regeditWrite.Close();
                        return(true);
                    }
                    else if (valueType.Equals(RegistryValueKind.DWord))
                    {
                        regeditWrite.SetValue(keyName, Convert.ToInt32(keyValue), RegistryValueKind.DWord);
                        regeditWrite.Close();
                        return(true);
                    }
                    else if (valueType.Equals(RegistryValueKind.ExpandString))
                    {
                        regeditWrite.SetValue(keyName, keyValue, RegistryValueKind.ExpandString);
                        regeditWrite.Close();
                        return(true);
                    }
                    else if (valueType.Equals(RegistryValueKind.MultiString))
                    {
                        regeditWrite.SetValue(keyName, RegeditNecessaryFunction.ToStringArray(keyValue), RegistryValueKind.MultiString);
                        regeditWrite.Close();
                        return(true);
                    }
                    else if (valueType.Equals(RegistryValueKind.QWord))
                    {
                        regeditWrite.SetValue(keyName, Convert.ToInt32(keyValue), RegistryValueKind.QWord);
                        regeditWrite.Close();
                        return(true);
                    }
                    else
                    {
                        regeditWrite.SetValue(keyName, keyValue, RegistryValueKind.String);
                        regeditWrite.Close();
                        return(true);
                    }
                }
                else
                {
                    RegistryKey regKeyCrator = Registry.CurrentUser;
                    regKeyCrator = regKeyCrator.CreateSubKey(System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH, subKey), RegistryKeyPermissionCheck.Default);

                    regKeyCrator.Close();
                    RegistryWriter(subKey, keyName, keyValue, valueType);
                    return(true);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(ProcestaVariables.Variables.ERROR_MESSAGES[0, 3] + Environment.NewLine + e, ProcestaVariables.Variables.ERROR_MESSAGES[0, 0], MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return(false);
            }
        }
Ejemplo n.º 4
0
        private PolicyItemCheckItem TestItem(RegistryKey passedRoot, string passedKey, string passedValue, PolicyItem item)
        {
            PolicyItemCheckItem returnValue = new PolicyItemCheckItem();

            try
            {
                RegistryKey rk = passedRoot.OpenSubKey(passedKey);

                object Value = rk.GetValue(passedValue);

                if (Value != null)
                {
                    RegistryValueKind rvk = rk.GetValueKind(item.Value);

                    if (ConvertRegKindToString(rvk).ToString().Equals(item.StringType))
                    {
                        if (rvk.Equals(RegistryValueKind.Binary))
                        {
                            byte[] bytes = (byte[])Value;
                            string vs    = "";

                            for (int i = 0; i < bytes.Length; i++)
                            {
                                vs += String.Format("{0:X2}", bytes[i]);
                            }

                            returnValue.LocalValue = vs;

                            if (vs.Equals(item.Data))
                            {
                                returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                                returnValue.ExistsInfo = "Values Match";
                            }
                            else
                            {
                                returnValue.Exists     = PolicyItem.ITEM_EXISTS_VALUE_DIFFERS;
                                returnValue.ExistsInfo = "Local value " + vs;
                            }
                        }
                        else if (rvk.Equals(RegistryValueKind.ExpandString))
                        {
                            returnValue.LocalValue = Value.ToString();

                            if (Value.ToString().Equals(item.Data))
                            {
                                returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                                returnValue.ExistsInfo = "Values Match";
                            }
                            else
                            {
                                if (Environment.ExpandEnvironmentVariables(item.Data).Equals(Value.ToString()))
                                {
                                    returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                                    returnValue.ExistsInfo = "Values Match";
                                }
                                else
                                {
                                    returnValue.Exists     = PolicyItem.ITEM_EXISTS_VALUE_DIFFERS;
                                    returnValue.ExistsInfo = "Local value " + Value;
                                }
                            }
                        }
                        else if (rvk.Equals(RegistryValueKind.MultiString))
                        {
                            string[] regItems = item.Data.Split('\0').Where(t => t.Length > 0).ToArray();

                            if (Value is string[] && regItems.SequenceEqual((string[])(Value)))
                            {
                                returnValue.LocalValue = Value.ToString();
                                returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                                returnValue.ExistsInfo = "Values Match";
                            }
                            else
                            {
                                returnValue.Exists     = PolicyItem.ITEM_EXISTS_VALUE_DIFFERS;
                                returnValue.ExistsInfo = "Local value " + Value;
                                returnValue.LocalValue = Value.ToString();
                            }
                        }
                        else if (Value.ToString().Equals(item.Data))
                        {
                            returnValue.LocalValue = Value.ToString();
                            returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                            returnValue.ExistsInfo = "Values Match";
                        }
                        else
                        {
                            returnValue.Exists     = PolicyItem.ITEM_EXISTS_VALUE_DIFFERS;
                            returnValue.ExistsInfo = "Local value " + Value;
                            returnValue.LocalValue = Value.ToString();
                        }
                    }
                    else
                    {
                        returnValue.Exists     = PolicyItem.ITEM_EXISTS_TYPE_DIFFERS;
                        returnValue.ExistsInfo = "Local type " + ConvertRegKindToString(rvk).ToString();
                        returnValue.LocalValue = item.Data.ToString();
                    }
                }
                else if (item.Value.StartsWith("**del.") || item.StringType.Equals("REG_NONE"))
                {
                    returnValue.Exists     = PolicyItem.ITEM_EXISTS_SAME;
                    returnValue.ExistsInfo = "Deleted locally too";
                    returnValue.LocalValue = "";
                }
                else
                {
                    returnValue.Exists     = PolicyItem.ITEM_MISSING;
                    returnValue.ExistsInfo = "Not set locally";
                    returnValue.LocalValue = "";
                }
            }
            catch
            {
                returnValue.Exists     = PolicyItem.ITEM_MISSING;
                returnValue.ExistsInfo = "Not set locally";
                returnValue.LocalValue = "";
            }

            return(returnValue);
        }
Ejemplo n.º 5
0
        //Write Registry Value
        public bool RegistryWriter(string subKey, string keyName,string keyValue, RegistryValueKind valueType)
        {
            try
            {
                RegistryPermission regeditPermission = new RegistryPermission(RegistryPermissionAccess.AllAccess,System.IO.Path.Combine(Registry.CurrentUser.ToString(),System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH,subKey)));
                regeditPermission.Demand();
                RegistryKey regeditWrite=Registry.CurrentUser;
                //regeditWrite.SetAccessControl(regeditUserRuls);
                regeditWrite = regeditWrite.OpenSubKey(System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH, subKey), true);
                if(regeditWrite!=null)
                {
                    if(valueType.Equals(RegistryValueKind.Binary))
                    {
                        regeditWrite.SetValue(keyName,RegeditNecessaryFunction.ToByteArray(keyValue),RegistryValueKind.Binary);
                        regeditWrite.Close();
                        return true;
                    }
                    else if(valueType.Equals(RegistryValueKind.DWord))
                    {
                        regeditWrite.SetValue(keyName,Convert.ToInt32(keyValue),RegistryValueKind.DWord);
                        regeditWrite.Close();
                        return true;
                    }
                    else if( valueType.Equals(RegistryValueKind.ExpandString))
                    {
                        regeditWrite.SetValue(keyName,keyValue,RegistryValueKind.ExpandString);
                        regeditWrite.Close();
                        return true;
                    }
                    else if(valueType.Equals(RegistryValueKind.MultiString))
                    {
                        regeditWrite.SetValue(keyName,RegeditNecessaryFunction.ToStringArray(keyValue),RegistryValueKind.MultiString);
                        regeditWrite.Close();
                        return true;
                    }
                    else if(valueType.Equals(RegistryValueKind.QWord))
                    {
                        regeditWrite.SetValue(keyName,Convert.ToInt32(keyValue),RegistryValueKind.QWord);
                        regeditWrite.Close();
                        return true;
                    }
                    else
                    {
                        regeditWrite.SetValue(keyName,keyValue,RegistryValueKind.String);
                        regeditWrite.Close();
                        return true;
                    }
                }
                else
                {
                    RegistryKey regKeyCrator=Registry.CurrentUser;
                    regKeyCrator = regKeyCrator.CreateSubKey(System.IO.Path.Combine(ProcestaVariables.Variables.REGISTRY_PATH, subKey), RegistryKeyPermissionCheck.Default);

                    regKeyCrator.Close();
                    RegistryWriter(subKey,keyName,keyValue,valueType);
                    return true;
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(ProcestaVariables.Variables.ERROR_MESSAGES[0,3] + Environment.NewLine + e, ProcestaVariables.Variables.ERROR_MESSAGES[0,0], MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return false;
            }
        }