簡體   English   中英

Shell上下文菜單

[英]Shell Context Menus

我當前正在運行Windows 7 x64 machine

我編寫了以下代碼以在右鍵單擊上添加上下文菜單:

    RegistryKey rKey = Registry.ClassesRoot.OpenSubKey("Directory\\Background\\shell", true);
    String[] names = rKey.GetSubKeyNames();
    foreach (String s in names)
    {
        System.Windows.Forms.MessageBox.Show(s); 
    }
    RegistryKey newKey = rKey.CreateSubKey("Your Application");
    RegistryKey newSubKey = newKey.CreateSubKey("command");
    newSubKey.SetValue("", "C:\\Windows\\System32\\notepad.exe");
    newSubKey.Close();
    newKey.Close();
    rKey.Close();                  

如果我直接在注冊表上重復該過程,則可以,但是不能通過此方法。

我還可以訪問注冊表,因為我添加了一個片段,該片段列出了我需要的所有子項,但是根本沒有添加一個。

我已經測試了您的代碼,它很好。 似乎您沒有訪問權限,無法從代碼中打開注冊表。 只需遵循以下簡單步驟:

  1. 關閉您的Visual Studio。 然后以“以管理員身份運行”模式再次打開它。 您可以通過右鍵單擊Visual Studio鏈接並選擇“以管理員身份運行”選項來執行此操作。
  2. 打開您的代碼,然后從那里運行。

如果要直接從Exe運行程序,請右鍵單擊Exe並選擇“以管理員身份運行”選項。

如果您不想執行“以管理員身份運行”,請按照以下步驟操作:

  1. 向您的項目添加一個名為App.manifest的新文件; 通過從Project添加一個新文件。
  2. 將以下數據添加到該文件,然后休息一下就可以了。

只需將您的應用程序名稱替換為MyApplication.app。 重要的部分是該部分。 休息是自動生成的。

  xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> </asmv1:assembly> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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