簡體   English   中英

盡管我可以使用 C# 代碼讀取,但在使用 C# 創建的注冊表編輯器中找不到鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM