91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

巧妙地利用進(jìn)程分離來設(shè)置程序開機(jī)自動啟動!(附源碼)

admin
2017年2月7日 17:59 本文熱度 6657

  在GG(高仿QQ)最早的版本中,我就加入了開機(jī)自動啟動的功能,是通過操作注冊表來實(shí)現(xiàn)的,但是操作注冊表需要管理員權(quán)限,這樣,就表示必須以管理員的身份來運(yùn)行GG客戶端。這對某些用戶來說可能接受不了,因?yàn)橐赃@么高的權(quán)限來運(yùn)行一個程序,用戶會覺得風(fēng)險(xiǎn)較大。而就從GG的角度來說,也只有在設(shè)置或取消開機(jī)啟動才需要這個權(quán)限,而一開始就以管理員身份運(yùn)行GG,就有點(diǎn)太夸張和浪費(fèi)了。

一.方案進(jìn)化

  我開始想到的解決方案是,仍然以普通用戶的身份啟動GG,當(dāng)需要操作注冊表時,再提升至管理員權(quán)限。后來通過查資料了解到:

(1)無法單獨(dú)提升某個線程的運(yùn)行權(quán)限,運(yùn)行權(quán)限是與進(jìn)程綁定了。

(2)若要提升進(jìn)程的權(quán)限,必須在進(jìn)程啟動時就設(shè)定。

  這意味著要實(shí)現(xiàn)我的方案,必須在GG設(shè)置或取消開機(jī)啟動時,重啟GG進(jìn)程。這也太不優(yōu)雅了。繼續(xù)想辦法,最后讓我想到了一個巧妙的方案。思路如下:

(1)將GG中設(shè)置或取消開機(jī)啟動的功能(即需要管理員權(quán)限的部分),做成一個單獨(dú)的控制臺程序AutoStart.exe,并且將其運(yùn)行權(quán)限配置為管理員。

(2)將AutoStart.exe放到與GG.exe的運(yùn)行目錄。

(3)GG實(shí)現(xiàn)開機(jī)啟動功能的方法就是啟動AutoStart.exe進(jìn)程,并通過啟動參數(shù)來傳遞相關(guān)信息給AutoStart.exe進(jìn)程。

二.方案實(shí)現(xiàn)

1.AutoStart.exe

  AutoStart.exe是一個控制臺程序,我將其實(shí)現(xiàn)為一個可復(fù)用的應(yīng)用程序,大家可以直接從文末下載復(fù)用。其源碼相當(dāng)簡單,如下所示:

復(fù)制代碼
     /// <summary>
        /// 第一個參數(shù)為exe的名稱,第二個參數(shù)為bool值,表示是否自動啟動
        /// </summary>        
        static void Main(string[] args)
        {
            try
            {
                bool autoStart = bool.Parse(args[1]);
                Console.WriteLine(string.Format("正在{0}自動啟動 {1} . . .", autoStart ? "設(shè)置" : "取消" ,args[0]) );                
                //操作注冊表,需要使用管理員身份啟動程序。
                RunWhenStart_usingReg(autoStart, args[0], AppDomain.CurrentDomain.BaseDirectory + args[0]);
                Console.WriteLine("");
                Console.WriteLine("操作完成! 按任意鍵退出 . . .");               
                Console.ReadLine();
            }
            catch(Exception ee)
            {
                Console.WriteLine("操作時發(fā)生異常:" + ee.Message + " 按任意鍵退出 . . .");               
                Console.ReadLine();
            }
        }

        #region 開機(jī)自動啟動
        /// <summary> 
        /// 開機(jī)自動啟動,使用注冊表 
        /// </summary> 
        /// <param name=\"Started\">是否開機(jī)自動啟動</param> 
        /// <param name=\"name\">取一個唯一的注冊表Key名稱</param> 
        /// <param name=\"path\">啟動程序的完整路徑</param> 
        public static void RunWhenStart_usingReg(bool started, string name, string path)
        {
            RegistryKey HKLM = Registry.LocalMachine;
            try
            {
                RegistryKey run = HKLM.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\");
                if (started)
                {
                    run.SetValue(name, path);
                }
                else
                {
                    object val = run.GetValue(name);
                    if (val != null)
                    {
                        run.DeleteValue(name);
                    }
                }
            }
            finally
            {
                HKLM.Close();
            }
        }
        #endregion      
復(fù)制代碼

  如果不知道如何將AutoStart.exe配置為以管理員身份啟動,可以參考這篇文章

2.在GG中調(diào)用AutoStart.exe

  當(dāng)用戶都選上或去掉勾選"開機(jī)自動啟動"時,程序執(zhí)行如下操作:

復(fù)制代碼
if (autoStartChanged)
    {
        string args = string.Format("{0} {1}", "GG.exe", autoStart? "true":"false");
        Process.Start(AppDomain.CurrentDomain.BaseDirectory + "AutoStart.exe", args);
    }
復(fù)制代碼

  運(yùn)行效果截圖:

  

三.下載

1.AutoStart 可執(zhí)行程序

2.AutoStart 源碼

 

PS:QQ的自動啟動是怎么實(shí)現(xiàn)的了?它似乎不需要管理員權(quán)限,有知道的朋友拜托留言告訴一下啊,謝謝! 


該文章在 2017/2/7 17:59:55 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 中文字幕在线播放 | 成人精品xx | 国产色婷| 国产日韩齐全 | 国产二区精品视频 | 最新国产成人野 | 欧洲亚洲日韩精品 | 韩国国内精品在线 | 最新精品国偷自产在线美女足 | 福利一区二区 | 成人导航秘网站 | 国产免费资源 | 91免费视频在线看 | 最新日韩午夜在线电影 | 九九国产热 | 日韩不卡在线观看 | 国产福利资源在线 | 国产欧美精品v | 国产大道香蕉大在线 | 福利片午夜免费观着 | 日韩精品成人一 | 国产精品一二三四区 | 日韩高清电影 | 精品国产理论在 | 日本三级免费观看 | 国产在线区 | 韩国a级特黄特 | 国产性爱精品 | 国产美乳艺术一区 | 91丨熟女丨对白 | 午夜福利写真网站 | 91国产红桃| 日韩天堂在线专区 | 日本亚洲精品视频 | 国产真实伦 | 国产免费乱伦理 | 91福利影视在线 | 国产91一区 | 国产综合色在 | 变态另类国产 | 99偷拍 |