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("軟件自啟動(dòng)");
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("應用名稱(chēng)", 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("應用名稱(chēng)", 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(); } } }}
運行后點(diǎn)擊按鈕:
,然后重啟后點(diǎn)擊按鈕:
發(fā)現沒(méi)?開(kāi)機自動(dòng)啟動(dòng)后
Environment.CurrentDirectory 發(fā)生了變更,
這樣在在我們程序中原本如果使用相對路徑進(jìn)行處理的,就找不見(jiàn)相應的文件了,
怎么處理?
方法1:
在程序初始化的時(shí)候改變下當前路徑
public Form1() { InitializeComponent(); Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; }方法2:添加環(huán)境變量 , 計算行--屬性--高級系統設置--環(huán)境變量--系統變量里面設置.
聯(lián)系客服