c# 开机启动相关

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)

 

 

 

C# 以管理员身份运行WinForm程序

   最近帮客户开发的WinForm客户端,部分在使用的过程中,会出现“系统文件找不到”的错误提示。

        调试后,确定为程序在操作配置文件时,系统权限引起的错误,直接管理员权限运行就正常了。

       考虑用户操作的便利性,设置为每次运行默认获取系统管理员权限,以下为设置步骤。

1、在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项,勾选“启用ClickOnce安全设置”:

 

2、这时,在项目下面会多出一个“app.manifest”的文件,

选中它,并找到代码段<requestedExecutionLevel level="asInvoker" uiAccess="false" />,

将其改为:<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />,


3、改正后,不要急于重新编译生成,再次打开“属性--安全性”界面,

 

将“启用ClickOnce安全设置”前面的勾去掉后再编译运行。 不然程序会报错无法运行。

4、最后,保存修改,重新编译生成程序。

再次打开程序时,会提示“用户账户控制”来获取管理员权限运行,点击“是”则获取了管理员权限。

$$$2016-12-17$$$

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2020-07-15 12:48  2eggs  Views(298)  Comments(0Edit  收藏  举报