C# 程序設置開機啟動(一)


一、示例使用VBScript創建啟動文件,並添加到Windows系統的啟動目錄

默認情況下

所有用戶啟動目錄:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

當前用戶的啟動目錄:C:\Users\【用戶】\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

1.創建VBScript文件,指定后台啟動exe可執行文件,命名為"xxx.vbs"。

注:雙擊vbs文件就可以后台啟動exe文件了

set wscriptObj = CreateObject("Wscript.Shell")   
wscriptObj.run "C:\Users\HK\Desktop\HKServerEditVersion2.4\Debug\HKServer.exe",0  

2.將VBScript文件手動移動到系統的啟動文件夾

把.vbs文件(或者它的快捷方式)直接復制到 開始-->所有程序-->啟動  文件夾下。

 

兩個啟動目錄都可以,只是針對的用戶范圍不同。

注:

1.移動文件的時候很多時候,需要管理員權限,點擊允許就行了。

2.如果是快捷方式,可以沒有擴展名。

 

二、在代碼中自動創建開機啟動文件處理

注意:

1.追加腳本內容,需要指定為默認編碼

2.如果需要以管理員身份啟動或者將啟動設置為所有的本地用戶,需要移動到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp,

使用注冊表獲取目錄的之后個目錄需要為LocalMachine。

 3.關於程序以管理員身份運行參考:C#如何以管理員身份運行程序(轉)

 

class Program
{
static void Main(string[] args)
{
    Console.WriteLine("Hello world");
    Console.WriteLine(DateTime.Now);

    CreateStartup();
    Log("程序啟動成功");

    Task.Factory.StartNew(() =>
    {
        while (true)
        {
            Log($"時間:{DateTime.Now}");
            Thread.Sleep(1000);
        }
    });
    Console.Read();
}
//記入日志
static void Log(string content)
{
    //日志記錄到桌面
    string path = LocalPathHelper.DesktopPath + "\\data.txt";
    if (File.Exists(path) == false)
    {
        File.Create(path).Close();
    }
    File.AppendAllText(path, $"{content}\r\n", Encoding.Default);
}
/// <summary>
/// 為當前程序創建后台啟動文件到 開機啟動文件夾
/// </summary>
static void CreateStartup()
{
    /**
        * 創建文件到了當前用戶的啟動文件夾
        */
    //C:\Users\tianma\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Console1.vbs
    //使用本地的啟動文件夾
    //如果想移動到這個目錄需要的操作:
    //1.當前程序以管理員身份運行
    //2.獲取的注冊表的根節點設置為LocalMachine
    //C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\Console1.vbs
    string path = LocalPathHelper.StartupPath + "\\Console1.vbs";
    if (File.Exists(path) == false)
    {
        File.Create(path).Close();
        StringBuilder str = new StringBuilder();
        str.AppendLine("set wscriptObj = CreateObject(\"Wscript.Shell\")");
        str.AppendLine("wscriptObj.run \"" + LocalPathHelper.CurrentProgramPath + "\\Console1.exe\",0");
        str.AppendLine();
        //需要指定編碼,不然無法運行命令
        File.AppendAllText(path, str.ToString(), Encoding.Default);
    }
}
}

三、如果需要一管理員的身份運行的程序,程序啟動時都需要授權,重啟后也是。

 

更多:

C# 根據注冊表獲取當前用戶的常用目錄整理

Windows服務簡單實例

VS Code搭建.NetCore開發環境(二)


免責聲明!

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



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