C#怎么添加开机启动项

为什么if语句老提示未对对象设置引用对象实例
RegistryKey RootKey, RegKey;
RootKey = Registry.CurrentUser.OpenSubKey("Software\\Windows\\CurrentVersion\\Run", true);
if ((RegKey = RootKey.OpenSubKey("123", true)) == null)
{
RootKey.CreateSubKey("123");
RegKey = RootKey.OpenSubKey("123", true);
RegKey.SetValue("abc", "d:\\1.exe");
}

private void Form1_Load(object sender, EventArgs e)
{
//检测程序是否设为开机启动
Register rg = new Register();
rg.start_with_windows();
}

class Register
{

/// <summary>
/// 开机启动注册表检查
/// </summary>
public void start_with_windows()
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey run = hklm.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
//未设置开机启动
if (run.GetValue("OA邮件提示") == null)
{
register();
}

}

/// <summary>
/// 将程序的开机启动写入注册表
/// </summary>
private void register()
{
string starupPath = Application.ExecutablePath;
//class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.
RegistryKey loca = Registry.LocalMachine;
RegistryKey run = loca.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");

try
{
run.SetValue("OA邮件提示", starupPath);
MessageBox.Show("注册表添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
loca.Close();
run.Close();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

}追问

我是在这个目录加的LocalMachine\\Software\\Microsoft\\Windows\\CurrentVersion\\Run,再新建一个项,属性里写上程序路径+程序名.exe,为什么开机不自动运行这个程序啊

追答

是不是你的系统设定的 不能开机启动或者注册表不能添加。。

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-20
因为RootKey是空,所以一直提示未对对象设置引用对象实例追问

我是在这个目录加的LocalMachine\\Software\\Microsoft\\Windows\\CurrentVersion\\Run,再新建一个项,属性里写上程序路径+程序名.exe,为什么开机不自动运行这个程序啊

如何用C#添加开机启动项?
C# 可以通过读写注册表来设置开机启动,具体代码如下:\/\/\/ \/\/\/ 开机启动项 \/\/\/ \/\/\/ 是否启动 \/\/\/ 启动值的名称 \/\/\/ 启动程序的路径 public void RunWhenStart(bool Started, string name, string path){ RegistryKey HKLM = Registry.LocalMachine; RegistryKey Run...

C#做的软件如何在代码中设置开机启动
位置:HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\WindowsNT\\CurrentVersion \\Winlogon\\Userinit。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,如图,但这个键允许指定用逗号分隔的多个程序,例如“userinit.exe,OSA.exe”(不含引号)。Explorer\\Run注册键 和load、Userinit不同,E...

C#怎么添加开机启动项
\/\/未设置开机启动 if (run.GetValue("OA邮件提示") == null){ register();} } \/\/\/ \/\/\/ 将程序的开机启动写入注册表 \/\/\/ private void register(){ string starupPath = Application.ExecutablePath;\/\/class Micosoft.Win32.RegistryKey. 表示Window注册表中项级节点,此类是注册表装.Registr...

用C#创建软件,怎样能使它成为开机启动项,并且启动后的界面在屏幕的右...
把软件的左键按住,托到开始,所有程序,启动下 也是这样的.开机后,程序就会自动启动,但要控制在哪个位置是无法做到的

请教:如何用C#编一个电脑开机自动运行的程序
1.复制程序exe到开始菜单的启动栏 1234File.Copy(@"D:\\我的项目\\启动程序.exe", @"C: \\Users\\Administrator\\AppData\\Roaming\\Microsoft \\Windows\\Start Menu\\Programs\\Startup" + @"\\启动程序.exe");2.修改注册表启动项。1234567string path = Application.ExecutablePath;RegistryKey rk =...

c#Winform程序,如何在 win7\/8 64位电脑上设置开机自动启动
\/\/\/ \/\/\/ 设置自动启动 \/\/\/ \/\/\/ 文件名 \/\/\/ 是否自动启动 private void SetAutoRun(string sFileName, bool blIsAutoRun){ RegistryKey reg = null;try { if (!System.IO.File.Exists(sFileName))return;String name = sFileName.Substring(sFileName.LastIndexOf(@"\\") + 1);reg ...

C#怎么让自动启动直接最小化,而手动启动则不是最小化
补:你就在括号里面加string[] args这句,然后你在主函数里面MessageBox.Show(args[0]);这样一来如果直接运行肯定会出错,你把别的文件拖到编译的exe上去放开,就会显示被拖程序的路径,因为这个操作实际上用命令行解释就是(假如你的文件是D:\\a.txt:mype.exe D:\\a.txt 启动项那里应该可以使用参数,写...

很可怕的一个C#2008小程序添加到了360开机启动项里,现在电脑开机后鼠标...
进安全模式可以吗? 如果可以,在任务管理器中把开机启动项去掉

c# 任务管理器开机启动项有禁用和开启两种状态,如何防止禁用,使程序一 ...
这个是系统级的,禁用了你就不能开启了,不然如果是病毒程序就没法控制了

C# 程序开机自动启动,但是获取当前路径名称是不正确,请教怎么解决?
你是怎么获取程序路径的,是否获取方式不对。你可以把程序安装路径写入注册表中,然后程序启动后从注册表读取程序路径。

相似回答