做一个检测程序,但不想每次开机手动的方式去打开程序,方法可以把你要开启的程序写进注册表,这样电脑启动后会自动读取注册表信息现实开机自启动。废话不多说,直接看代码
/// <summary>
/// 开机自启动
/// </summary>
private void WriteRegistry()
{
string strName = Environment.CurrentDirectory; // 取得或设置当前工作目录的完整限定路径
string files = Directory.GetFiles(strName, "XXX.exe", SearchOption.TopDirectoryOnly).FirstOrDefault();
if (File.Exists(files))
{
string strNewName = Path.GetFileName(files);
RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (reg == null)
{
reg = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
}
else
{
if (reg.GetValue(strNewName) == null)
{
reg.SetValue(strNewName, files);
}
}
}
}
从注册表获取程序工作路径
/// <summary>
/// 获取工作路径
/// </summary>
/// <returns></returns>
public string RedegitApp() {
RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);//读取注册表
if (reg.GetValue("DeployClien.exe") != null)
{
return Directory.GetParent(reg.GetValue("XXX.exe").ToString()).ToString();//获取exe所在目录(x:\xxx\xxx\)
}
else
{
return “ ”;
}
}
另外补充点 设置电脑自启
/// <summary>
/// 重启电脑
/// </summary>
public void ResetComputer() {
Process.Start("shutdown.exe", "-r -t 120");
}