我有一个程序要在系统托盘中运行。当我的程序正在运行时,我想在用户单击桌面时为他们提供上下文菜单。
例如,假设用户点击了桌面(不是任何文件夹、图标等,只点击了桌面)。我会为他们提供上下文菜单,例如:
我知道如何使用注册表文件 (.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/