224 lines
9.9 KiB
C#
224 lines
9.9 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using DevExpress.Utils;
|
|
using DevExpress.XtraEditors;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using DevExpress.XtraTab;
|
|
using Microsoft.Win32;
|
|
using Server.Helper;
|
|
|
|
namespace Server.Forms;
|
|
|
|
public class FormRegValueEditWord : XtraForm
|
|
{
|
|
private readonly RegistrySeeker.RegValueData _value;
|
|
|
|
private const string DWORD_WARNING = "The decimal value entered is greater than the maximum value of a DWORD (32-bit number). Should the value be truncated in order to continue?";
|
|
|
|
private const string QWORD_WARNING = "The decimal value entered is greater than the maximum value of a QWORD (64-bit number). Should the value be truncated in order to continue?";
|
|
|
|
private IContainer components;
|
|
|
|
private Label label2;
|
|
|
|
private Label label1;
|
|
|
|
private WordTextBox valueDataTxtBox;
|
|
|
|
private SimpleButton cancelBtn;
|
|
|
|
private SimpleButton okBtn;
|
|
|
|
private TextEdit valueNameTxtBox;
|
|
|
|
private RadioGroup radioGroupBase;
|
|
|
|
private XtraTabControl xtraTabControl1;
|
|
|
|
private XtraTabPage xtraTabPage1;
|
|
|
|
public FormRegValueEditWord(RegistrySeeker.RegValueData value)
|
|
{
|
|
_value = value;
|
|
InitializeComponent();
|
|
valueNameTxtBox.Text = value.Name;
|
|
if (value.Kind == RegistryValueKind.DWord)
|
|
{
|
|
Text = "Edit DWORD (32-bit) Value";
|
|
valueDataTxtBox.Type = WordTextBox.WordType.DWORD;
|
|
valueDataTxtBox.Text = Server.Helper.ByteConverter.ToUInt32(value.Data).ToString("x");
|
|
}
|
|
else
|
|
{
|
|
Text = "Edit QWORD (64-bit) Value";
|
|
valueDataTxtBox.Type = WordTextBox.WordType.QWORD;
|
|
valueDataTxtBox.Text = Server.Helper.ByteConverter.ToUInt64(value.Data).ToString("x");
|
|
}
|
|
}
|
|
|
|
private void okButton_Click(object sender, EventArgs e)
|
|
{
|
|
if (valueDataTxtBox.IsConversionValid() || IsOverridePossible())
|
|
{
|
|
_value.Data = ((_value.Kind == RegistryValueKind.DWord) ? Server.Helper.ByteConverter.GetBytes(valueDataTxtBox.UIntValue) : Server.Helper.ByteConverter.GetBytes(valueDataTxtBox.ULongValue));
|
|
base.Tag = _value;
|
|
base.DialogResult = DialogResult.OK;
|
|
}
|
|
else
|
|
{
|
|
base.DialogResult = DialogResult.None;
|
|
}
|
|
Close();
|
|
}
|
|
|
|
private DialogResult ShowWarning(string msg, string caption)
|
|
{
|
|
return MessageBox.Show(msg, caption, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
|
|
}
|
|
|
|
private bool IsOverridePossible()
|
|
{
|
|
string msg = ((_value.Kind == RegistryValueKind.DWord) ? "The decimal value entered is greater than the maximum value of a DWORD (32-bit number). Should the value be truncated in order to continue?" : "The decimal value entered is greater than the maximum value of a QWORD (64-bit number). Should the value be truncated in order to continue?");
|
|
return ShowWarning(msg, "Overflow") == DialogResult.Yes;
|
|
}
|
|
|
|
private void radioGroupBase_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (valueDataTxtBox.IsHexNumber != (Convert.ToInt32(radioGroupBase.EditValue) == 16))
|
|
{
|
|
if (valueDataTxtBox.IsConversionValid() || IsOverridePossible())
|
|
{
|
|
valueDataTxtBox.IsHexNumber = Convert.ToInt32(radioGroupBase.EditValue) == 16;
|
|
}
|
|
else
|
|
{
|
|
radioGroupBase.EditValue = 10;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing && components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Server.Forms.FormRegValueEditWord));
|
|
this.label2 = new System.Windows.Forms.Label();
|
|
this.label1 = new System.Windows.Forms.Label();
|
|
this.cancelBtn = new DevExpress.XtraEditors.SimpleButton();
|
|
this.okBtn = new DevExpress.XtraEditors.SimpleButton();
|
|
this.valueDataTxtBox = new Server.Helper.WordTextBox();
|
|
this.valueNameTxtBox = new DevExpress.XtraEditors.TextEdit();
|
|
this.radioGroupBase = new DevExpress.XtraEditors.RadioGroup();
|
|
this.xtraTabControl1 = new DevExpress.XtraTab.XtraTabControl();
|
|
this.xtraTabPage1 = new DevExpress.XtraTab.XtraTabPage();
|
|
((System.ComponentModel.ISupportInitialize)this.valueDataTxtBox.Properties).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.valueNameTxtBox.Properties).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.radioGroupBase.Properties).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.xtraTabControl1).BeginInit();
|
|
this.xtraTabControl1.SuspendLayout();
|
|
this.xtraTabPage1.SuspendLayout();
|
|
base.SuspendLayout();
|
|
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.label2.AutoSize = true;
|
|
this.label2.Location = new System.Drawing.Point(13, 65);
|
|
this.label2.Name = "label2";
|
|
this.label2.Size = new System.Drawing.Size(62, 13);
|
|
this.label2.TabIndex = 15;
|
|
this.label2.Text = "Value data:";
|
|
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
|
this.label1.AutoSize = true;
|
|
this.label1.Location = new System.Drawing.Point(13, 17);
|
|
this.label1.Name = "label1";
|
|
this.label1.Size = new System.Drawing.Size(66, 13);
|
|
this.label1.TabIndex = 16;
|
|
this.label1.Text = "Value name:";
|
|
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
this.cancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
this.cancelBtn.Location = new System.Drawing.Point(105, 131);
|
|
this.cancelBtn.Name = "cancelBtn";
|
|
this.cancelBtn.Size = new System.Drawing.Size(83, 26);
|
|
this.cancelBtn.TabIndex = 30;
|
|
this.cancelBtn.Text = "Cancel";
|
|
this.okBtn.Location = new System.Drawing.Point(17, 131);
|
|
this.okBtn.Name = "okBtn";
|
|
this.okBtn.Size = new System.Drawing.Size(83, 26);
|
|
this.okBtn.TabIndex = 29;
|
|
this.okBtn.Text = "OK";
|
|
this.okBtn.Click += new System.EventHandler(okButton_Click);
|
|
this.valueDataTxtBox.IsHexNumber = false;
|
|
this.valueDataTxtBox.Location = new System.Drawing.Point(17, 83);
|
|
this.valueDataTxtBox.MaxLength = 8;
|
|
this.valueDataTxtBox.Name = "valueDataTxtBox";
|
|
this.valueDataTxtBox.Properties.MaxLength = 8;
|
|
this.valueDataTxtBox.Size = new System.Drawing.Size(171, 28);
|
|
this.valueDataTxtBox.TabIndex = 17;
|
|
this.valueDataTxtBox.Type = Server.Helper.WordTextBox.WordType.DWORD;
|
|
this.valueNameTxtBox.Location = new System.Drawing.Point(17, 35);
|
|
this.valueNameTxtBox.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
this.valueNameTxtBox.Name = "valueNameTxtBox";
|
|
this.valueNameTxtBox.Size = new System.Drawing.Size(333, 28);
|
|
this.valueNameTxtBox.TabIndex = 31;
|
|
this.radioGroupBase.EditValue = 16;
|
|
this.radioGroupBase.Location = new System.Drawing.Point(217, 72);
|
|
this.radioGroupBase.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
this.radioGroupBase.Name = "radioGroupBase";
|
|
this.radioGroupBase.Properties.Appearance.BackColor = System.Drawing.Color.Transparent;
|
|
this.radioGroupBase.Properties.Appearance.Options.UseBackColor = true;
|
|
this.radioGroupBase.Properties.Items.AddRange(new DevExpress.XtraEditors.Controls.RadioGroupItem[2]
|
|
{
|
|
new DevExpress.XtraEditors.Controls.RadioGroupItem(16, "Hex"),
|
|
new DevExpress.XtraEditors.Controls.RadioGroupItem(10, "Dec")
|
|
});
|
|
this.radioGroupBase.Properties.NullText = "Base";
|
|
this.radioGroupBase.Size = new System.Drawing.Size(143, 85);
|
|
this.radioGroupBase.TabIndex = 32;
|
|
this.radioGroupBase.SelectedIndexChanged += new System.EventHandler(radioGroupBase_SelectedIndexChanged);
|
|
this.xtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.xtraTabControl1.Location = new System.Drawing.Point(0, 0);
|
|
this.xtraTabControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
this.xtraTabControl1.MultiLine = DevExpress.Utils.DefaultBoolean.True;
|
|
this.xtraTabControl1.Name = "xtraTabControl1";
|
|
this.xtraTabControl1.SelectedTabPage = this.xtraTabPage1;
|
|
this.xtraTabControl1.Size = new System.Drawing.Size(379, 207);
|
|
this.xtraTabControl1.TabIndex = 33;
|
|
this.xtraTabControl1.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[1] { this.xtraTabPage1 });
|
|
this.xtraTabPage1.Controls.Add(this.label1);
|
|
this.xtraTabPage1.Controls.Add(this.radioGroupBase);
|
|
this.xtraTabPage1.Controls.Add(this.label2);
|
|
this.xtraTabPage1.Controls.Add(this.valueNameTxtBox);
|
|
this.xtraTabPage1.Controls.Add(this.valueDataTxtBox);
|
|
this.xtraTabPage1.Controls.Add(this.cancelBtn);
|
|
this.xtraTabPage1.Controls.Add(this.okBtn);
|
|
this.xtraTabPage1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
|
this.xtraTabPage1.Name = "xtraTabPage1";
|
|
this.xtraTabPage1.Size = new System.Drawing.Size(377, 176);
|
|
base.AutoScaleDimensions = new System.Drawing.SizeF(6f, 13f);
|
|
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
base.ClientSize = new System.Drawing.Size(379, 207);
|
|
base.Controls.Add(this.xtraTabControl1);
|
|
base.IconOptions.Icon = (System.Drawing.Icon)resources.GetObject("FormRegValueEditWord.IconOptions.Icon");
|
|
base.IconOptions.Image = (System.Drawing.Image)resources.GetObject("FormRegValueEditWord.IconOptions.Image");
|
|
base.Name = "FormRegValueEditWord";
|
|
base.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
this.Text = "FormRegValueEditWord";
|
|
((System.ComponentModel.ISupportInitialize)this.valueDataTxtBox.Properties).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.valueNameTxtBox.Properties).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.radioGroupBase.Properties).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.xtraTabControl1).EndInit();
|
|
this.xtraTabControl1.ResumeLayout(false);
|
|
this.xtraTabPage1.ResumeLayout(false);
|
|
this.xtraTabPage1.PerformLayout();
|
|
base.ResumeLayout(false);
|
|
}
|
|
}
|