在64位windows下使用instsrv.exe和srvany.exe创建windows服务
在64位windows下使用instsrv.exe和srvany.exe創(chuàng)建windows服務(wù)
在32位的windows下,包括windows7,windows xp以及windows 2003,都可以使用instsrv.exe和srvany.exe來(lái)創(chuàng)建自定義的windows服務(wù)。比如,我們有一個(gè)bat文件,用于將指定的程序作為服務(wù)進(jìn)行啟動(dòng),使用一般的工具都不可以進(jìn)行此類(lèi)工作,而使用由windows 2003的資源工具包windows toolkit中所帶的instsrv就可以。
詳細(xì)的用法這里就不再具體敘述,簡(jiǎn)單一點(diǎn)就是使用instsrv將相應(yīng)的srvany注冊(cè)成服務(wù),然后在注冊(cè)表中增加相應(yīng)的Application和AppDirectory參數(shù),用于srvany啟動(dòng)我們所相應(yīng)的服務(wù)。如下列代碼所示://將相應(yīng)程序生成成服務(wù)
| 1 2 3 4 5 6 7 8 9 | set s32=%windir%\system32 %s32%\instsrv.exe %service_name% %s32%\srvany.exe //在注冊(cè)表中更新相應(yīng)的參數(shù) echo Windows Registry Editor Version 5.00> %reg_file% echo >> %reg_file% echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%service_name%\Parameters] >> %reg_file% echo "Application"="%prog_path%\\%prog_name%" >> %reg_file%//程序地址 echo "AppDirectory"="%prog_path%" >> %reg_file%//程序目錄 |
以上的代碼在所有的32位系統(tǒng)之上都可以正常的運(yùn)行,包括windows 2000。然而,在64位的windows下,以上的代碼卻失效了。會(huì)報(bào)一個(gè)以下錯(cuò)誤:
| 1 | Unable to find the file at the given path |
在仔細(xì)檢查了參數(shù)之后,確定這是由于系統(tǒng)原因所引起的。
最終的原因在于,我們所使用的instsrv和srvany是32位的,而windows現(xiàn)在沒(méi)有相對(duì)應(yīng)的64位相對(duì)應(yīng)工具發(fā)布。而程序本身是沒(méi)有問(wèn)題的,問(wèn)題在于我們將instsrv和Srvany放到windows/system32正面,而在64位系統(tǒng)中,這里應(yīng)該存放64位的程序,所以最終的解決問(wèn)題很簡(jiǎn)單。我們只需要將這兩個(gè)程序再copy至32位程序應(yīng)該放置的地方,比如windows/sysWow64目錄,這樣就可以了。原先的相應(yīng)步驟以及程序根本就不需要作任何改動(dòng)。instsrv會(huì)自動(dòng)地找到原先應(yīng)該放在system32下的程序,而這個(gè)程序現(xiàn)在被放置在了SysWow64目錄下。
簡(jiǎn)單一點(diǎn)的解決方法就是,將instsrv和srvany程序在windows/sysWow64目錄下再copy一份,相當(dāng)于在system32和sysWow64下都有程序,這樣問(wèn)題即解決。更底層的原因,也許只有微軟能解釋了,簡(jiǎn)而言之,在64位系統(tǒng)下,32位程序是看不到放置在system32下面的程序的,而它應(yīng)該訪問(wèn)的system32目錄被系統(tǒng)映射到了sysWow64目錄下了,在運(yùn)行時(shí)系統(tǒng)會(huì)自動(dòng)地將相應(yīng)的sysWow64目錄映射為程序所認(rèn)為的system32。
參考文檔:http://en.wikipedia.org/wiki/WoW64
轉(zhuǎn)載請(qǐng)標(biāo)明出處:i flym
本文地址:http://www.iflym.com/index.php/computer-use/201205020001.html
總結(jié)
以上是生活随笔為你收集整理的在64位windows下使用instsrv.exe和srvany.exe创建windows服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 把页面上DIV元素生成图片
- 下一篇: 重型钢甲车?