a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

使用winapi安裝Windows服務示例程序

2020-01-24 02:55:38
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

using system;
using system.runtime.interopservices;
namespace myserviceinstaller
{

    class serviceinstaller
    {
        #region private variables
        private string _servicepath;
        private string _servicename;
        private string _servicedisplayname;
        #endregion private variables
        #region dllimport
        [dllimport("advapi32.dll")]
        public static extern intptr openscmanager(string lpmachinename, string lpscdb, int scparameter);
        [dllimport("advapi32.dll")]
        public static extern intptr createservice(intptr sc_handle, string lpsvcname, string lpdisplayname,
        int dwdesiredaccess, int dwservicetype, int dwstarttype, int dwerrorcontrol, string lppathname,
        string lploadordergroup, int lpdwtagid, string lpdependencies, string lpservicestartname, string lppassword);
        [dllimport("advapi32.dll")]
        public static extern void closeservicehandle(intptr schandle);
        [dllimport("advapi32.dll")]
        public static extern int startservice(intptr svhandle, int dwnumserviceargs, string lpserviceargvectors);
        [dllimport("advapi32.dll", setlasterror = true)]
        public static extern intptr openservice(intptr schandle, string lpsvcname, int dwnumserviceargs);
        [dllimport("advapi32.dll")]
        public static extern int deleteservice(intptr svhandle);
        [dllimport("kernel32.dll")]
        public static extern int getlasterror();
        #endregion dllimport
        /// <summary>
        /// 應用程序入口.
        /// </summary>

        [stathread]
        static void main(string[] args)
        {

            string svcpath;
            string svcname;
            string svcdispname;
            //服務程序的路徑
            svcpath = @"c:/myservice.exe";
            svcdispname = "myservice";
            svcname = "myservice";
            serviceinstaller c = new serviceinstaller();
            c.installservice(svcpath, svcname, svcdispname);
            console.read();

        }

        /// <summary>
        /// 安裝和運行
        /// </summary>
        /// <param name="svcpath">程序路徑.</param>
        /// <param name="svcname">服務名</param>
        /// <param name="svcdispname">服務顯示名稱.</param>
        /// <returns>服務安裝是否成功.</returns>
        public bool installservice(string svcpath, string svcname, string svcdispname)
        {
            #region constants declaration.
            int sc_manager_create_service = 0x0002;
            int service_win32_own_process = 0x00000010;
            //int service_demand_start = 0x00000003;
            int service_error_normal = 0x00000001;
            int standard_rights_required = 0xf0000;
            int service_query_config = 0x0001;
            int service_change_config = 0x0002;
            int service_query_status = 0x0004;
            int service_enumerate_dependents = 0x0008;
            int service_start = 0x0010;
            int service_stop = 0x0020;
            int service_pause_continue = 0x0040;
            int service_interrogate = 0x0080;
            int service_user_defined_control = 0x0100;
            int service_all_access = (standard_rights_required |
            service_query_config |
            service_change_config |
            service_query_status |
            service_enumerate_dependents |
            service_start |
            service_stop |
            service_pause_continue |
            service_interrogate |
            service_user_defined_control);
            int service_auto_start = 0x00000002;
            #endregion constants declaration.
            try
            {
                intptr sc_handle = openscmanager(null, null, sc_manager_create_service);
                if (sc_handle.toint32() != 0)
                {
                    intptr sv_handle = createservice(sc_handle, svcname, svcdispname, service_all_access, service_win32_own_process, service_auto_start, service_error_normal, svcpath, null, 0, null, null, null);
                    if (sv_handle.toint32() == 0)
                    {
                        closeservicehandle(sc_handle);
                        return false;
                    }
                    else
                    {
                        //試嘗啟動服務
                        int i = startservice(sv_handle, 0, null);
                        if (i == 0)
                        {

                            return false;
                        }

                        closeservicehandle(sc_handle);
                        return true;
                    }
                }
                else

                    return false;
            }
            catch (exception e)
            {
                throw e;
            }
        }
        /// <summary>
        /// 反安裝服務.
        /// </summary>
        /// <param name="svcname">服務名.</param>
        public bool uninstallservice(string svcname)
        {
            int generic_write = 0x40000000;
            intptr sc_hndl = openscmanager(null, null, generic_write);
            if (sc_hndl.toint32() != 0)
            {
                int delete = 0x10000;
                intptr svc_hndl = openservice(sc_hndl, svcname, delete);
                if (svc_hndl.toint32() != 0)
                {
                    int i = deleteservice(svc_hndl);
                    if (i != 0)
                    {
                        closeservicehandle(sc_hndl);
                        return true;
                    }
                    else
                    {
                        closeservicehandle(sc_hndl);
                        return false;
                    }
                }
                else
                    return false;
            }
            else
                return false;
        }
    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一级黄色片在线 | 亚洲激情一区二区 | 中文在线播放 | 国产欧美日韩一区二区三区 | 色呦呦免费观看 | 国产视频福利一区 | 91日韩欧美 | 国产一级免费在线观看 | 99国产精品 | 99pao成人国产永久免费视频 | 91麻豆蜜桃一区二区三区 | 五月激情六月婷婷 | 国产精品一区二区在线 | 91国内精品| 欧美午夜精品理论片a级按摩 | 色综合久久久久久久 | 黄免费看 | 精品国产乱码久久久久久丨区2区 | 亚洲精品在线国产 | 美女久久 | 成人国产在线 | 91精品国产一区二区 | 亚洲欧美日韩在线一区 | 中文字幕在线观看 | 国产精品成人3p一区二区三区 | 范冰冰一级做a爰片久久毛片 | 亚洲精品久久久蜜臀 | 欧美高清一区 | 欧洲妇女成人淫片aaa视频 | 中文字幕在线精品 | aaaa网站| 九九热在线免费视频 | 高清av一区 | 亚洲精品9999 | 久久精品久久久久电影 | 日韩精品极品视频在线 | 亚洲国产精品久久 | 久久久久久免费毛片精品 | 97在线免费观看 | 一级片大全| 国产精品亲子伦av一区二区三区 |