• windows服务


    1.左侧工具栏里有Timer控件,但是如果调用的是系统时间,就需要添加System.timer.timer空间下的控件。

    image

     

    2.服务编写之后,还不能由SCM(服务控制管理器)进行管理,需要给该服务添加装载器。在Service1.cs的设计视图,点击右键,选择“添加装载器”,系统默认就会添加ProjectInstaller.cs这个类

    image

    添加该类后,在该类的设计视图上可看到serviceInstaller1和serviceProcessInstaller1,分别设置其属性。

        设置serviceInstaller1的运行方式为手动或者自动

        设置serviceInstaller1的ServiceName,设置为什么,服务列表中就显示什么

        设置serviceProcessInstaller1的运行账号为LocalSystem

    image

     

    3.用U盘实现自动升级软件

    步骤:
    1.软件打包zip
    2.读取U盘  复制到指定位置
    3.关闭软件  解压到指定位置
    4.启动软件 删除zip

     

    3.1 解压缩 (难点)
    1.下载SharpZipLib.dll ,添加引用,添加一个解压类 UnZipClass.cs

    UnZipClass.cs

     

    3.2 (启动进程难点)

    因为启动进程的用户名是System,开启进程后,不会显示exe的界面,所以必须 【模拟用户开启进程】,调用方法

    image

    //模拟用户开启进程
    SystemUser.CreateProcess(SystemUser.WTSGetActiveConsoleSessionId(), filePath, "");

     
    SystemUser.cs

     

    3.3 获取当前工作目录(安装路径)

    开始的情况这么写是错误的。

    //获取当前工作目录
    //string CurrentDirectoryPath = Environment.CurrentDirectory + \Debug.zip;
    由于windows服务安装时,系统会自动将windows服务的程序文件复制到系统目录下,通常是System32目录下,windows服务的运行目录就是系统目录,有时候,windows服务在运行时需要知道自己的安装目录,比如,windows服务运行时所需要的一些资源文件,通常可能是一些声音或图像文件,这些资源文件是位于安装目录下的,只有windows服务知道了安装目录,才能对这些资源文件进行访问,那么windows服务如何知道自己的安装目录的信息呢,一种比较简单的做法是通过访问注册表。

    /*
    Windows服务在系统安装后会在注册表的 "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices[ServiceName]"下以服务的ServiceName建1个目录,目录中会有"ImagePath"节,这里保存的就是该服务的安装路径。
    */

            //获取注册表的ImagePath路径
            public static string GetWindowsServiceInstallPath(string ServiceName)
            {
                string key = "SYSTEM\CurrentControlSet\Services\" + ServiceName;
                string path = Registry.LocalMachine.OpenSubKey(key).GetValue("ImagePath").ToString();
                path = path.Substring(0, path.LastIndexOf("\"));
                return path;
            }

     

    3.4 开启关闭进程辅助类

     

    MyProcess.cs

     

    4.Service1.cs

    Service1.cs
  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/tangge/p/3811784.html
Copyright © 2020-2023  润新知