我正在研究如何在Windows上下文菜單中將快捷方式添加到我的應用程序中。我碰到this文章,我試了一下。這是它用來在註冊表中創建密鑰的代碼。創建註冊表項時發生UnauthorizedAccessException
private void btnAddMenu_Click(object sender, System.EventArgs e)
{
RegistryKey regmenu = null;
RegistryKey regcmd = null;
try
{
regmenu = Registry.ClassesRoot.CreateSubKey(MenuName);
if(regmenu != null)
regmenu.SetValue("",this.txtName.Text);
regcmd = Registry.ClassesRoot.CreateSubKey(Command);
if(regcmd != null)
regcmd.SetValue("",this.txtPath.Text);
}
catch(Exception ex)
{
MessageBox.Show(this,ex.ToString());
}
finally
{
if(regmenu != null)
regmenu.Close();
if(regcmd != null)
regcmd.Close();
}
}
問題是如果我通過我的管理員帳戶運行它,它工作正常。但是,當我通過不具有管理員權限的其他帳戶執行此操作時,它會引發此異常。
system.unauthorizedaccessexception access to the registry key is denied
現在,如果我要使用此代碼在我自己的應用程序來創建上下文菜單的快捷方式,我不能肯定每個用戶都可以運行它爲管理員,對不對?
有沒有什麼辦法在C#中去升級創建註冊表鍵時的用戶權限?
如果您知道任何其他方式將項目添加到Windows上下文菜單,我也會對它們感興趣。
謝謝。
當用戶以管理員身份安裝應用程序時,您必須創建該密鑰。 – ZippyV 2012-04-06 10:18:10
這將需要用戶交互,對吧?有沒有辦法從代碼中做到這一點? – Isuru 2012-04-06 10:21:37
這是安裝程序的工作。它將擁有必要的權利。不需要代碼。用VS安裝項目很簡單。 – 2012-04-06 10:44:56