轉(zhuǎn)摘:有一個EXE程序,可以作為托盤程序運行。我寫了注冊表:
\SoftWare\Microsoft\windows\CurrentVersion\Run,現(xiàn)在能夠在用戶登錄操作系統(tǒng)后自動運行。
我想讓它在登錄之前就能自動運行,希望通過注冊表達(dá)到這個目的,請問哪位知道方法?
查到下面的方法,覺得不太方便
引用自 jimmyge (Do Re Mi)
想讓一個程序在啟動系統(tǒng)的時候自動運行,你有什么好辦法?添加到啟動組?那如果別人刪除掉就不管用了。如果你使用了Windows NT/2000/XP,就可以試試把這個程序添加為一個服務(wù),這樣只有擁有權(quán)限的人才可以更改服務(wù),只要你設(shè)置好權(quán)限,就不用擔(dān)心會被別人刪除了。
要把應(yīng)用程序添加為服務(wù),你需要兩個小軟件:Instsrv.exe和Srvany.exe。Instsrv.exe可以給系統(tǒng)安裝和刪除服務(wù),Srvany.exe可以讓程序以服務(wù)的方式運行。這兩個軟件都包含在Windows NT Resource Kit里,如果你沒有,也可以點擊這里下載。
把這兩個程序保存在一個方便的位置,例如C盤根目錄下。我們舉例來說明,把OE作為一個服務(wù)添加進(jìn)Windows XP Professional操作系統(tǒng)中,并把這個服務(wù)命名為“Mail”。在運行中輸入“CMD”,回車,打開命令行窗口,在提示符后面直接輸入:“c:\instsrv.exe Mail c:\srvany.exe”然后回車,其中的“c:\instsrv.exe”和“c:\srvany.exe”表示這兩個程序保存的位置,而Mail則是你想添加的服務(wù)名稱。
運行Regedit打開注冊表編輯器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到剛才添加的Mail,點擊右鍵,新建一個鍵,命名為“Parameters”,點擊新建的Parameters,并再次新建一個名稱為“Application”的子鍵,數(shù)據(jù)類型為“REG_SZ”,數(shù)值為希望作為服務(wù)運行的程序的所在位置,如果你的Windows系統(tǒng)安裝在C盤下,那么OE的程序位置就是C:\Program Files\Outlook Express\msimn.exe ,把這個路徑添入數(shù)值中。到現(xiàn)在,這個服務(wù)已經(jīng)成功的添加并且設(shè)置好了。如果你希望做的更加專業(yè),可以在Mail服務(wù)下建立一個名為Description的子鍵,數(shù)據(jù)類型同樣為REG_SZ,數(shù)值可以寫一些你對這個服務(wù)的描述,這個我們在后面可以看到。
接下來需要對服務(wù)做一些額外的設(shè)置,在運行中輸入“Services.msc”并回車,在列表中找到我們剛添加的Mail服務(wù),雙擊打開,來做詳細(xì)的設(shè)置。在“General”選項卡上,我們需要設(shè)置這個服務(wù)的運行方式,在圖二中可以看見,作為一個服務(wù),有“自動(Automatic)”,“手動(Manual)”和“禁止(Disabled)”三種啟動類型,按照需要,我們一般設(shè)置成自動就可以了。而在“Logon”選項卡下可以設(shè)置以什么身份運行這個服務(wù),一般可以不用理會,按照默認(rèn)的設(shè)置。“Recovery”選項卡下則是進(jìn)行恢復(fù)設(shè)置的,你可以指定,在服務(wù)第一次,第二次和第三次出錯之后分別采取什么措施。“Dependencies”則顯示了服務(wù)之間的依存關(guān)系,可以讓你察看這個服務(wù)的運行依賴哪些其它服務(wù),以及還有什么服務(wù)依賴于這個服務(wù)。這后面幾個對我們一般用戶沒有什么意義。經(jīng)過這些設(shè)置,你的服務(wù)已經(jīng)完全可以正常工作了。
對于不能普通方式下安裝為服務(wù)的程序,用srvany.exe來實現(xiàn)。
該工具添加的注冊表信息并不完全,還是需要手工添加 Parameters 和 Application,并且還要 srvany.exe,和修改 ImagePath 的數(shù)值才可,否則在啟動服務(wù)時顯示:1053 服務(wù)沒有及時響應(yīng)啟動或控制請求。
在補充完全注冊表信息后,就正常了。
以下是一個例子
存為“文件名.reg”,然后用鼠標(biāo)雙擊這個”文件名.reg”文件,選確定,就可添加到注冊表了。實際程序的參數(shù),你需要根據(jù)具體的程序來調(diào)整。
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\srvany\Parameters]
“Application”=”c:\\usr\\local\\bin\\dmh_wish.exe”
“AppParameters”=”-f dmh84_server startup \”after 1 {mbx whenmsg startup_RPC mbx_RPC}\”"
“AppDirectory”=”c:\\usr\\local\\bin”
圖形界面的程序,如果做成服務(wù)后(并允許與桌面交互),注銷后就會被關(guān)閉,反之則彈不出圖形界面,很不爽。如果你不想讓別人看見,就不允許與桌面交互,那除了進(jìn)程外什么都看不見。
將容易導(dǎo)致系統(tǒng)被入侵的服務(wù)“禁用”,然后將這些服務(wù)對應(yīng)的注冊表鍵刪除,這樣就算對方連接到你的系統(tǒng)服務(wù)列表中來也不能修改服務(wù)的屬性,不能修改服務(wù)屬性就不能啟動服務(wù)。打開注冊表編輯器,依次找到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices”項,其下的每個子鍵就是系統(tǒng)中對應(yīng)的“服務(wù)”,如“Messenger”服務(wù)對應(yīng)的子鍵是
“Messenger”,但有的服務(wù)這兩個名字不會相同,不過也很容易找到,
“DisplayName”的鍵值就是服務(wù)的顯示名稱。這里以刪除“Messenger”服務(wù)為例,其它服務(wù)方法相同,只是在注冊表中刪除的項不同,在刪除這個項之前要先將其導(dǎo)出備份,然后點選“Messenger”項,按鼠標(biāo)右鍵選擇“刪除”(重命名也可以)命令。此時在服務(wù)列表中雙擊“Messenger”就會彈出如下圖所示的錯誤信息,當(dāng)然對方連接到你的服務(wù)列表雙擊時也會出現(xiàn)這樣的提示,而不是出現(xiàn)屬性框。如果要恢復(fù)這個服務(wù),只需將剛才備份的注冊表文件導(dǎo)入到注冊表中就可以了。
另一種添加為自啟動的方法:(Win2000/XP中適用)
在“開始→運行”中執(zhí)行“Gpedit.msc”。打開“組策略”,可看到“本地計算機策略”中有兩個選項:“計算機配置”與“用戶配置”,展開“用戶配置→管理模板→系統(tǒng)→登錄”,雙擊“在用戶登錄時運行這些程序”子項進(jìn)行屬性設(shè)置,選定“設(shè)置”項中的“已啟用”項并單擊“顯示”按鈕彈出“顯示內(nèi)容”窗口,再單擊“添加”按鈕,在“添加項目”窗口內(nèi)的文本框中輸入要自啟動的程序的路徑,如圖所示,單擊“確定”按鈕就完成了。
重新啟動計算機,系統(tǒng)在登錄時就會自動啟動你添加的程序。用這種方式添加的自啟動程序在系統(tǒng)的“系統(tǒng)配置實用程序”里找不到,同樣在我們所熟知的注冊表項中也找不到。
通過這種方式添加的自啟動程序雖然被記錄在注冊表中,但是不在我們所熟知的注冊表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]項和[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]項內(nèi),而是在注冊表的[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]項。
Run SRVINSTW.EXE
1. Put both files into the system32 system directory.
2. run SRVINSTW.EXE
3. Select Install as a service, Local Machine
4. Give your service any name you desire
5. When prompted for the path to the service, give the path to SERVANY.EXE in your system32 directory
6. Select Service is it’s own process
7. Set the login credentials. System account appears to work
Edit your registry
1. Run regedit.exe
2. Go to HKEY_LOCAL_MACHINE\SYSTEM\Current Control Set\Services\ (the name you picked in step 4 above)
3. Add a key = “Parameters”
4. Add a string value = “Application”. Set this to the command to run your wiki. e.g. “c:\ruby\bin\ruby.exe c:\instiki-0.9.1\instiki.rb -p 2500” (or use rubyw.exe)
5. Add a string value = “AppDirectory”. Set this to the path to ruby.exe. e.g. “c:\ruby\bin\”
Restart your machine
1. check to see if it worked.
2. if it didn’t work, go to Control Panel\Administrative tools\services. Here you can find your service and change the settings.
用instsrv與srvany在windows 建立服務(wù)
instsrv.exe srvany.exe
這兩個文件是MS批量生產(chǎn)的,網(wǎng)上應(yīng)該能爛下載。
首先將這兩個文件放到自定的路徑中。例如放在C:\根目錄下
在CMD對話框中輸入 c:\instsrv.exe servername c:\ srvany.exe 回車
其中servername是你所需要的服務(wù)名。
之后你需要進(jìn)入注冊表進(jìn)行相應(yīng)的設(shè)置,在注冊表的:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servername
中簡歷Parameters子項,然后在其中建立一個字符串Application,雙擊該字符串,輸入如下格式的語句:
C:\ABC\DEF\XXX.exe +Xms256M +Xmx256M -nodbcheck -minspan60 -retry1000
其中的256M與服務(wù)占用內(nèi)存大小有關(guān),這就要看機器的配置了。
修改結(jié)束后推出,使用命令services.msc進(jìn)入服務(wù)界面,找到你剛剛定制的服務(wù),雙擊進(jìn)入,之后選擇“登陸”,再選中“本地登陸”并確定。之后手動啟動服務(wù)即可。
C:\service\instsrv.exe adslSrv “C:\service\srvany.exe”
下面介紹使用SrvAny.exe將tracd封裝成windows服務(wù),本人使用的是XP SP2,其他windows系統(tǒng)應(yīng)該大同小異:
1.下載Windows 2003 Resource Kits,在微軟官方有下載。下載后安裝,默認(rèn)安裝到C:\Program Files\Windows Resource Kits\Tools目錄,其實我們只需要該目錄下的SrvAny.exe和instsrv.exe文件即可,在此目錄下還有rktools.chm幫助文件,大家可以查看SrvAny.exe如何使用。
2.創(chuàng)建服務(wù),語法如下:instsrv 服務(wù)名稱 srvany所在路徑\srvany.exe。假設(shè)我們的Windows 2003 Resource Kits都安裝在C:\Program Files\Windows Resource Kits\Tools目錄,待建立的服務(wù)名稱是TracSrv,那么我們的命令如下:
“C:\Program Files\Windows Resource Kits\Tools\instsrv” TracSrv “C:\Program Files\Windows Resource Kits\Tools\srvany.exe”
需要注意的是,srvany前的路徑不能省略,必須是絕對路徑。
現(xiàn)在我們已經(jīng)創(chuàng)建了一個名叫TracSrv的服務(wù),下一步我們來配置這個服務(wù),讓它封裝tracd命令。
3.在注冊表中配置TracSrv服務(wù),運行“regedit”,進(jìn)入注冊表。找到注冊表項“HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\TracSrv”,在TracSrv項里建立新的子項“Parameters”,再在新建的 Parameters項里新建字符串值,數(shù)值名稱設(shè)為“Application”,數(shù)值數(shù)據(jù)設(shè)為我們在第一篇說的啟動tracd的行命令,也就是
c:\python24\python c:\python24\scripts\tracd -p 8001 C:\SCM\Angel\Angel_Trac
(注意使用全路徑)。這樣,我們就配置好了TracSrv服務(wù)。
4.啟動TracSrv服務(wù)?,F(xiàn)在我們就可以在瀏覽器中訪問Trac網(wǎng)站,只要服務(wù)器啟動,不需要進(jìn)入登陸Windows桌面,我們就可以訪問Trac站點了。
如何刪除這個服務(wù)呢?使用sc.exe即可,此命令在xp系統(tǒng)自帶。
1.停止TracSrv服務(wù)。
2.運行cmd,進(jìn)入行命令窗口,輸入“sc delete TracSrv”,回車即可。
以上是在使用Tracd作為Web服務(wù)器時的做法,其他的Web服務(wù)器(比如Apache)本身就已經(jīng)作為服務(wù)運行,不需要進(jìn)行此設(shè)置。
另外,以上講的封裝服務(wù)的方法是通用的,可以使用這種方法創(chuàng)建新的服務(wù)來封裝你的程序。