باسلام و خسته نباشید.
من یه برنامه واسه کار با ریجستری دارم مینویسم که کار با ریجستری رو تو یه کلاس نوشتم.
به یه مشکل برخوردم.
زمانی که کلیدی در ریجستری موجود نیست و با کد مورد نظر یک کلید میخوام ایجاد کنم میگه شما مجاز به این کار نیستید.
Requested registry access is not allowed.
کد های نوشته شده در کلاس مربوطه:
public bool CurrentUser(string OpenSubKey, string Name, object value, RegistryValueKind ValueKind)
{
RegistryKey reg;
try
{
reg =
Registry.CurrentUser.OpenSubKey(OpenSubKey, true);
reg.SetValue(Name, value, ValueKind);
reg.Close();
return true;
}
catch(ExternalException error)
{
MessageBox.Show(error.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return false;
}
//================================================== =================================================
public bool CurrentUser(string OpenSubKey,string CreateKey, string Name, object value, RegistryValueKind ValueKind)
{
RegistryKey reg;
try
{
reg =
Registry.CurrentUser.OpenSubKey(OpenSubKey, true);
reg.CreateSubKey(CreateKey, RegistryKeyPermissionCheck.ReadWriteSubTree);
reg.SetValue(Name, value, ValueKind);
reg.Close();
return true;
}
catch (ExternalException error)
{
MessageBox.Show(error.Message, "Error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return false;
}
روش استفاده:
ClassRegistry claReg = new ClassRegistry();
if (!claReg.CurrentUser("Software\\Microsoft\\Windows \\CurrentVersion\\Policies\\ActiveDesktop",
"NoDispCpl", 0, Microsoft.Win32.RegistryValueKind.DWord))
claReg.CurrentUser("Software\\Microsoft\\Windows\\ CurrentVersion\\Policies", "ActiveDesktop",
"NoChangingWallpaper", 0, Microsoft.Win32.RegistryValueKind.DWord);
از طرفی چطور باید مقدار باینری رو تو مقادیر باینری ست کنم.
توجه کنید:
ClassRegistry claReg = new ClassRegistry();
if (!claReg.CurrentUser("Software\\Microsoft\\Windows \\CurrentVersion\\Policies\\Explorer",
"NoFolderOptions",1, Microsoft.Win32.RegistryValueKind.Binary))
claReg.CurrentUser("Software\\Microsoft\\Windows\\ CurrentVersion\\Policies","Explorer",
"NoFolderOptions", 00000001, Microsoft.Win32.RegistryValueKind.Binary);
مقدار مشخص شده برنگ قرمز رو چطور باید ست کنم؟
با تشکر
علی پاییزی