我有一个小应用程序,CheckBox如果用户希望应用程序从Windows启动,用户可以设置该选项.
我的问题是如何实际设置应用程序在启动时运行.
ps:我正在使用C#和.NET 2.0.
Spi*_*dey 122
感谢大家的响应如此之快.Joel,我使用了你的选项2,并在当前用户的"Run"文件夹中添加了一个注册表项.这是我对其他任何感兴趣的人使用的代码.
using Microsoft.Win32;
private void SetStartup()
{
RegistryKey rk = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (chkStartUp.Checked)
rk.SetValue(AppName, Application.ExecutablePath);
else
rk.DeleteValue(AppName,false);
}
Run Code Online (Sandbox Code Playgroud)
Joe*_*orn 103
几个选项,按优先顺序排列:
HKey_Current_User\Software\Microsoft\Windows\CurrentVersion\Run注册表项.这里唯一的问题是它需要对注册表的写访问权限,这并不总是可用的.HKey_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Run注册表项.这里唯一的问题是它需要对注册表的写访问权限,这并不总是可用的.这个答案现在比较老了.自从我写这篇文章以来,Windows 10发布了,它改变了开始菜单文件夹的工作方式......包括Startup文件夹.我还不清楚在没有引用Windows用于这些位置的内部数据库的情况下添加或删除该文件夹中的文件是多么容易.
这是一个如此简单的解决方案:
加上
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.SetValue("Your Application Name", Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)
去除
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
key.DeleteValue("Your Application Name", false);
Run Code Online (Sandbox Code Playgroud)
小智 6
/// <summary>
/// Add application to Startup of windows
/// </summary>
/// <param name="appName"></param>
/// <param name="path"></param>
public static void AddStartup(string appName, string path)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.SetValue(appName, "\"" + path + "\"");
}
}
/// <summary>
/// Remove application from Startup of windows
/// </summary>
/// <param name="appName"></param>
public static void RemoveStartup(string appName)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey
("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
key.DeleteValue(appName, false);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
除了 Xepher Dotcom 的回答之外,Windows Startup 的文件夹路径应该这样编码:
var Startup = Environment.GetFolderPath(Environment.SpecialFolder.Startup);
Run Code Online (Sandbox Code Playgroud)
您可以在"HKCU\Software\Microsoft\Windows\CurrentVersion\Run"中创建一个注册表项,请注意它在Vista上可能会有所不同.由于UAC,您的设置可能会"虚拟化".
小智 5
这是将程序添加到Windows Vista 7、8、10启动的所有方法
- 文件路径
C:\Users\Bureau Briffault\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup(在任务管理器中可见,在当前用户登录成功时运行,无需管理员权限)
C:\Users\Default\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup(从任务管理器中可见,在所有用户登录成功时运行,需要管理员权限)
- 注册表路径
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run(在任务管理器中可见,在当前用户登录成功时运行,无需管理员权限)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce(在任务管理器中不可见,在当前用户登录成功时运行,在登录时间内运行一次,不需要管理员权限)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(从任务管理器中可见,在所有用户登录成功时运行,需要管理员权限)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce(在任务管理器中不可见,在所有用户登录成功时运行,在登录时间内运行一次,需要管理员权限)
- 任务计划程序
Microsoft.Win32.Taskscheduler.dll(从任务管理器中不可见,在Windows引导上运行,以管理员身份运行,需要管理员权限)
| 归档时间: |
|
| 查看次数: |
98936 次 |
| 最近记录: |