C# 软件开机启动

  • A+
所属分类:.NET技术
摘要

  运行后点击按钮:   然后重启后点击按钮:   发现没?开机自动启动后

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;  using Microsoft.Win32; using System.IO;  namespace WindowsFormsApp1 {     public partial class Form1 : Form     {         public Form1()         {             InitializeComponent();            // Class1.test();            // Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;         }          private void button1_Click(object sender, EventArgs e)         {             MessageBox.Show("软件自启动");                        String LogPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log");             MessageBox.Show(Environment.CurrentDirectory+"n"+LogPath);              //Class1.test();         }          private void Form1_Load(object sender, EventArgs e)         {             AutoStart();         }          private void AutoStart(bool isAuto = true, bool showinfo = true)         {             try             {                 if (isAuto == true)                 {                     RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;                     RegistryKey R_run = R_local.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");                     R_run.SetValue("应用名称", Application.ExecutablePath);                     R_run.Close();                     R_local.Close();                 }                 else                 {                     RegistryKey R_local = Registry.CurrentUser;//RegistryKey R_local = Registry.CurrentUser;                     RegistryKey R_run = R_local.CreateSubKey(@"SOFTWAREMicrosoftWindowsCurrentVersionRun");                     R_run.DeleteValue("应用名称", false);                     R_run.Close();                     R_local.Close();                 }             }               // if (showinfo)             //      MessageBox.Show("您需要管理员权限修改", "提示");             // Console.WriteLine("您需要管理员权限修改");             catch (Exception ex)             {                 String LogPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log");                 if (!Directory.Exists(LogPath))                     Directory.CreateDirectory(LogPath);                 if (!File.Exists(LogPath + "\log.txt"))                     File.Create(LogPath + "\log.txt").Close();                 string fileName = LogPath + "\log.txt";                 string content = DateTime.Now.ToLocalTime() + " 0001_" + "您需要管理员权限修改" + "n" + ex.StackTrace + "rn";                 Logger(fileName, content);              }          }         public static void  disPlay(string path)         {              MessageBox.Show(path);         }         public  void Logger(string fileName, string content)         {              using (StreamWriter sw = new StreamWriter(fileName, true))             {                 sw.Write(content);                 sw.Close(); sw.Dispose();             }         }     } } 

  运行后点击按钮:

C# 软件开机启动

 

 

 然后重启后点击按钮:

C# 软件开机启动

 

 

 

发现没?开机自动启动后

Environment.CurrentDirectory 发生了变更,

这样在在我们程序中原本如果使用相对路径进行处理的,就找不见相应的文件了,

怎么处理?

方法1:

在程序初始化的时候改变下当前路径

 public Form1()         {             InitializeComponent();            Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory;         } 

  方法2:添加环境变量 , 计算行--属性--高级系统设置--环境变量--系统变量里面设置.

  static void Main(string[] args)         {             Console.WriteLine("更多精品搜索公众号:" + "dotnet编程大全");             Console.WriteLine("C#技术交流群:"+"添加小编微信" + "zls20210502");             Console.WriteLine("切记备注:加群");             Console.ReadKey();         }