Windowsのコンテキストメニューでアプリケーションにショートカットを追加する方法を研究しています。私はこの記事に出くわし、それを試してみました。これは、レジストリにキーを作成するために使用するコードです。
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
自分のアプリケーションの1つでこのコードを使用して、コンテキストメニューにショートカットを作成した場合、すべてのユーザーがこのコードを管理者として実行するかどうかはわかりません。
レジストリキーを作成するときにユーザー特権をエスカレートする方法はC#にありますか?
Windowsのコンテキストメニューに項目を追加する他の方法を知っているなら、私もそれらに興味があります。
ありがとうございました。