C# 軟件開機啟動


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(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                    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(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
                    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 + "\r\n";
                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();
            }
        }
    }
}

  運行后點擊按鈕:

 

 

 然后重啟后點擊按鈕:

 

 

 

發現沒?開機自動啟動后

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();
        }

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM