程序有英語 簡體中文 兩種語言,根據操作系統環境來選擇language.
代碼下載:http://bilaopao.download.csdn.net/
開發工具:VS 2008

修復過程分【普通修復】和【強力修復】。
XP和VISTA/WIN7下的修復操作還是有很多區別的。但基于的原理是一樣的。 并且因為Vista/Win7下的Smart Card 服務的scardsvr.exe可執行文件被更改為scardsvr.dll,也就沒有了scardsvr的相關安裝命令。我用dependency查看了下scardsvr.dll,只能看到一個入口函數。能力有限,google了一些資料也沒有結果。就沒分析下去了。
【普通修復】的修復過程(以XP下的修復過程講述,vista/win7下操作請看代碼):
(1)檢查"智能卡服務"是否為自啟動。并設置其為自啟動。
(2)檢測服務當前狀態是否為SERVICE_RUNNING,并設置其狀態為運行中。
(3)檢測前兩步是否成功,如果成功則向用戶彈出messagebox詢問moveable device功能是否正常。
(4)如果功能仍abnormal,則初步判斷是服務登陸賬戶為非"NT AUTHORITY\LocalService" ,則用CreateProcess來運行 sc.exe config SCardSvr obj= \"NT AUTHORITY\LocalService" password= "" ,改變其用戶為localservice(smart card service只有在此登陸賬戶下才正常運行)。
(5)如果在普通修復過程中遇到服務查詢不到等error時,程序自動啟動強力修復來安裝smart card service.
注意:普通修復中的第3,4步中有點問題,在這個地方其實最好是直接檢查服務的登陸賬戶。然后做出相應的動作,但是我這個地方沒有想到實現的辦法。望前輩提示。另外就是sc的命令格式有嚴格的限制,編碼的時候要注意等號后面首先是空格。我當時被這個空格困擾到了。
【強力修復】的修復過程(XP下的修復,vista/win7 下沒有強力修復)
其實強力修復的過程就是網上流傳的那個修復過程,我只不過在這個修復過程中增加了驗證和配置修改。
修復過程:
(1)ScardSvr.exe reinstall
(2)regsvr32.exe SCardssp.dll
(3)sc.exe config SCardSvr obj= \"NT AUTHORITY\LocalService" password= ""
(4)通過以上三步之后,剩下的配置修改就跟普通修復過程一樣了。而以上三步通過CreateProcess和WaitForSingleObject來配合控制。
應該差不多了。代碼是半個月前寫的,一些地方可能有疏漏。
在代碼實現中還有很多地方需要注意,我也都在代碼中做出了注釋。可自行查看。
如需交流,可mailto:pencil@yeah.net MSN:pencil@yeah.net