/// <summary> /// /// </summary> /// <param name="pathProvider"></param> /// <returns></returns> public static RegistryKey GetRegistryKey(IRegistryPathInfo pathProvider) { using (var _registryKey = RegistryNodeHelpers.GetRegistryKey(pathProvider.RootType)) { return(_registryKey.CreateSubKey(pathProvider.NodeName, RegistryKeyPermissionCheck.ReadWriteSubTree)); } }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="value"></param> /// <param name="valueType"></param> protected void SetValue(string name, object value, RegistryValueKind valueType = RegistryValueKind.String) { if (string.IsNullOrEmpty(name)) { throw new ArgumentNullException("name"); } if (!IsDeleted && !_childNodeName.IsCompiled) { var _stackFrame = StackTraceHelpers.GetStackFrameByIndex(1); var _propertyName = _stackFrame.Method.Name.Replace("get_", string.Empty).Replace("set_", string.Empty); _childNodeName.Replace(_propertyName, value); if (!_childNodeName.IsCompiled) { _innerRepository.Add(name, new RegistryNameValuePair(name, value, valueType)); return; } else { _nodePathInfo = RegistryNodePath.Parse(_nodePathInfo.RootType, _childNodeName); using (var _registryKey = RegistryNodeHelpers.GetRegistryKey(_nodePathInfo)) { if (0 < _innerRepository.Count) { foreach (var _value in _innerRepository.Values) { if (!_value.IsDeleted) { _registryKey.SetValue(_value.Name, _value.Value, _value.ValueType); continue; } _registryKey.DeleteValue(_value.Name, false); } _innerRepository.Clear(); } } } } if (CanWrite) { using (var _registryKey = RegistryNodeHelpers.GetRegistryKey(_nodePathInfo)) { if (null == value) { _registryKey.DeleteValue(name, false); return; } _registryKey.SetValue(name, value); } } }
/// <summary> /// /// </summary> /// <param name="type"></param> /// <param name="command"></param> /// <returns></returns> public static RegistryEntry Initialize(Type type, IRegistryPathInfo pathInfo) { var _registryEntry = ObjectUtils.CreateInstanceOf <RegistryEntry>(type); _registryEntry._nodePathInfo = pathInfo; _registryEntry._childNodeName = new RegistryNodeName(pathInfo.NodeName); return(_registryEntry); }
/// <summary> /// /// </summary> /// <param name="nodePathInfo"></param> public RegistryEntry(IRegistryPathInfo nodePathInfo) { if (null == nodePathInfo) { throw new ArgumentNullException("pathInfo"); } _nodePathInfo = nodePathInfo; _childNodeName = new RegistryNodeName(nodePathInfo.NodeName); }
/// <summary> /// /// </summary> /// <param name="pathInfo"></param> /// <param name="nodeName"></param> /// <returns></returns> public static IRegistryPathInfo Combine(IRegistryPathInfo pathInfo, RegistryNodeName nodeName) { if (null == pathInfo) { throw new ArgumentNullException("pathProvider"); } if (null == nodeName || nodeName.IsEmpty) { throw new ArgumentNullException("nodeName"); } return(new RegistryNodePath(pathInfo.RootType, string.Format(@"{0}\{1}", pathInfo.NodeName, nodeName))); }
/// <summary> /// /// </summary> /// <param name="pathProvider"></param> /// <returns></returns> public static string GetRegistryNodeName(IRegistryPathInfo pathProvider) { return(string.Format(@"{0}\{1}", GetRegistryNodeName(pathProvider.RootType), pathProvider.NodeName)); }