c# - 将上下文菜单添加到桌面背景

标签 c# contextmenu desktop

我有一个程序要在系统托盘中运行。当我的程序正在运行时,我想在用户单击桌面时为他们提供上下文菜单。

例如,假设用户点击了桌面(不是任何文件夹、图标等,只点击了桌面)。我会为他们提供上下文菜单,例如:

wallpaper context menu screenshot

我知道如何使用注册表文件 (.REG) 添加它们:

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Wallpaper]
"MUIVerb"="Wallpaper Settings"
"SubCommands"="Next;Previous;Reset"
"Position"="bottom"

; Next
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Next]
@="Next"

; Previous
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Previous]
@="Previous"

; Reset
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Reset]
@="Reset"

我尝试在我的程序中将这些条目添加到注册表中,但我一直遇到权限问题,因为该程序未以管理员身份运行。我也不想强制我的程序的最终用户以管理员身份运行它。

如何编写一个程序,在桌面背景中添加上下文菜单,但不必以管理员身份运行?或者我可以吗?

我的程序是否必须作为服务运行?

谢谢。

最佳答案

在安装过程中应用 .REG 文件。

如果您自己制作安装程序:

var path = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\Next";
Microsoft.Win32.Registry.LocalMachine.CreateSubKey(path, true); // True makes it writeable
Microsoft.Win32.Registry.LocalMachine.OpenSubKey(path).SetValue("@", "Reset", Microsoft.Win32.RegistryValueKind.String);

.

谢天谢地,没有管理权限就无法做到这一点。

关于c# - 将上下文菜单添加到桌面背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21058464/

相关文章:

c# - 有关 Vault.dll 和 Vaultcli.dll 的信息

Excel VBA用户表单列表框动态上下文菜单使用.OnAction方法

c# - 使用 Knockoutjs 显示点击的项目

c# - 访问 View 模型类中的选项卡控件

c# - 这个 while 循环中发生了什么?

visual-studio-2010 - 如何修改项目文件的 Visual Studio 上下文菜单并向其添加命令

javascript - Chrome 扩展 : Context menu on editable selected text only

delphi - 如何从 Delphi 获取/设置桌面图标位置和大小?

java - 桌面共享,无需安装软件

javascript - 适用于 Chrome 以外浏览器的桌面通知 API?