C# 程序设置开机启动

Posted 天马3798

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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开发环境(二)

以上是关于C# 程序设置开机启动的主要内容,如果未能解决你的问题,请参考以下文章

c#写的winform设置了启动检查更新,又设置了开机自动启动,开机自启动时不能启动更新程序

C# 程序设置开机启动

C#如何设置程序开机自启动

C# 一个程序启动另一个程序,ProcessStartInfo.Arguments接收参数

C#实现程序开机启动

C# 程序开机自动启动,但是获取当前路径名称是不正确,请教怎么解决?