1. C#如何设置开机自动运行
a. 包含命名空间 using Microsoft.Win32;
b. 取得程序的安装路径
private void checkBoxAutoRun_CheckedChanged(object sender, EventArgs e)
{
string filename = InstallDir + "//DesktopAssistant.exe";
pagestatus.SetAutoRun(filename,checkBoxAutoRun.Checked);
}
c. 设置注册表的run 项新增值
public void SetAutoRun(string fileName,bool isAutoRun)
{
RegistryKey reg = null;
try
{
String name = fileName.Substring(fileName.LastIndexOf("//") + 1);
reg = Registry.LocalMachine.OpenSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run", true);
if (reg == null)
reg = Registry.LocalMachine.CreateSubKey("SOFTWARE//Microsoft//Windows//CurrentVersion//Run");
if (isAutoRun)
reg.SetValue(name, fileName);
else
reg.SetValue(name, false);
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
finally
{
if(reg!=null)
reg.Close();
}
}
下图为注册表中添加了DesktopAssistant的开机启动项:
2. C#如何设置/获取程序的安装路径
由于安装路径可以由用户更改,因此上述b中的InstallDir需要根据实际安装路径设置。
a. 设置安装路径可以在新建安装项目时在一个注册表目录下新建一个“环境字符串值”,并将value设为[TARGETDIR],这样可以将[TARGETDIR]保存在注册表中:
下图在HKET_LOCAL_MACHINE/Software/[Manufacturer]下设置一个name为InstallPath的“环境字符串值”,value设为[TARGETDIR]。
[Manufacturer]为新建安装项目的Manufacturer属性设置值。
下图为新添加的注册表项,安装路径自动赋给了InstallPath项:
b.获取注册表中的安装目录,程序段:
RegistryKey reg = null;
String name = "InstallPath";
reg = Registry.LocalMachine.OpenSubKey("SOFTWARE//ADADesktopAssistant", true) ;
if (reg != null)
{
if (reg.GetValue(name) == null)
{
return false;
}
else
{
InstallDir = (st ring)reg.GetValue(name);
return true;
}
}
return false;