我正在使用以下代码在启动时启动程序:
RegistryKey rk = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
rk.SetValue(AppName, Application.ExecutablePath);
但是当运行我的项目时,该错误发生了:
System.UnauthorizedAccessException:“试图执行未经授权的操作。”
答案 0 :(得分:1)
很久以前就有这个问题。
首先,您需要在HKCU\Software\Microsoft\Windows\CurrentVersion\Run
中设置注册表。请确保您具有足够的权限!:
using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue(AppName, Application.ExecutablePath);
}
然后按照此post:
中的步骤进行操作
- 将其添加到当前用户的“启动”文件夹中。这要求您的应用程序运行所需的权限最少,并为用户提供最多的权限 控制和反馈正在发生的事情。不利的一面是 确定是否已经显示该复选框更加困难 下次他们在您的程序中查看该屏幕时选中。
- 将其添加到
HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run
注册表项。唯一的问题是它需要写访问权限 到注册表,但并不总是可用。- 创建在用户登录时触发的计划任务
- 将其添加到
HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run
注册表项。唯一的问题是它需要写访问权限 到注册表,但并不总是可用。- 将其设置为Windows服务。仅当您真的是真的,和知道要确定要为 all 运行该程序时,才执行此操作 用户在计算机上。