[英]Can't find Keys in Registry Editor created using c# though I can read using C# code
我正在嘗試使用 c# 將 Windows 應用程序中的配置保存到注冊表。 我可以成功寫入注冊表並使用 c# 代碼檢索回來。 但是當我在注冊表編輯器中查找它們時,我找不到它們。
我使用以下代碼寫入注冊表:
private void BtnAddSchedule_Click(object sender, EventArgs e)
{
try
{
if (txtScheduleName.Text != string.Empty)
{
if (txtFileToSchedule.Text != string.Empty)
{
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software", true).CreateSubKey("Scheduler.Manager", true);
if (registryKey != null)
{
RegistryKey registryKeyScheduleName = registryKey.CreateSubKey(txtScheduleName.Text);
if (registryKeyScheduleName != null)
{
registryKeyScheduleName.SetValue("ScheduleName", txtScheduleName.Text);
registryKeyScheduleName.SetValue("FileToSchedule", txtFileToSchedule.Text);
registryKeyScheduleName.SetValue("Hour", nudScheduleHour.Value);
registryKeyScheduleName.SetValue("Minute", nudScheduleMinute.Value);
registryKeyScheduleName.Close();
UpdateScheduleList();
btnAddSchedule.Text = "Add";
}
else
{
throw new Exception("Unable to create registry key '" + txtScheduleName.Text + "'.");
}
registryKey.Close();
}
else
{
throw new Exception("Unable to create registry key 'Scheduler.Manager'.");
}
}
else
{
MessageBox.Show(text: "Please select valid file to schedule.", caption: "Error Info", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show(text: "Please enter valid schedule name.", caption: "Error Info", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error);
}
}
catch (Exception exception)
{
MessageBox.Show(text: exception.Message, caption: "Error Info", buttons: MessageBoxButtons.OK, icon: MessageBoxIcon.Error);
}
}
我正在使用以下代碼讀取注冊表項:
private void UpdateScheduleList()
{
lvScheduleList.Items.Clear();
RegistryKey registryKey = Registry.LocalMachine.OpenSubKey("Software", false).OpenSubKey("Scheduler.Manager", false);
if (registryKey != null)
{
string[] registryKeyScheduleNameNameList = registryKey.GetSubKeyNames();
RegistryKey registryKeyScheduleName;
ListViewItem listViewItem = null;
foreach (string registryKeyScheduleNameName in registryKeyScheduleNameNameList)
{
registryKeyScheduleName = registryKey.OpenSubKey(registryKeyScheduleNameName);
if (registryKeyScheduleName != null && registryKeyScheduleName.ValueCount == 4)
{
listViewItem = lvScheduleList.Items.Add(registryKeyScheduleNameName);
listViewItem.SubItems.Add(registryKeyScheduleName.GetValue("FileToSchedule").ToString());
listViewItem.SubItems.Add(DateTime.Now.Date.AddHours(Convert.ToInt32(registryKeyScheduleName.GetValue("Hour").ToString())).AddMinutes(Convert.ToInt32(registryKeyScheduleName.GetValue("Minute").ToString())).ToString());
registryKeyScheduleName.Close();
}
else
{
continue;
}
}
registryKey.Close();
}
}
當我檢查注冊表項的路徑時,我得到以下路徑但在注冊表編輯器中找不到“Scheduler.Manager”項
{HKEY_LOCAL_MACHINE\\Software\\Scheduler.Manager\\Schedule1}
我在這里做錯了什么嗎?
您的應用程序是否在 64 位機上作為 32 位應用程序運行? 這將導致您對注冊表的編程訪問被重定向到注冊表的 32 位部分(WOW 節點)。 如果是這種情況,您可以使用 32 位注冊表編輯器查看結果。
這可能是因為您指定要構建 32 位應用程序,或者因為您的目標是“任何”平台,但選中了“首選 32 位”復選框。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.