Windows Mobile 上的註冊表匯入與匯出及Smart Device CAB Project的妙用

來源:互聯網
上載者:User

     雖然,我們可以在.inf檔案中操作註冊表(在VS 2005中,我們只要在Smart CAB Project 中添加註冊表操作即可),但是有時候,如:機器上空間有限,因為CAB檔案需要佔用空間,如果我們採用將安裝程式要用到的檔案直接拷到相應的目錄下,然後修改註冊表,這樣就可以節省CAB所需要的空間,特別是針對空間剛好只夠存放一個應用程式的時候;還有就是OEM產生將軟體ROM的時候,這些情況下我們需要手動操作註冊表,這個時候,我們需要自己寫註冊表檔案。用google搜尋肯定能搜尋到關於如何編寫註冊表的一系列文章。但是,我們可以通過Windows Mobile的遠程工具來獲得註冊表檔案,無須自己編寫(就算要自己寫,也只要修改一些參數)。
      以下的內容,是在Windows Mobile 5.0 for Pocket PC的(中文版)模擬器上做實驗。
      匯出註冊表檔案
      以匯出PPC裡的一個應用程式Hanwang的註冊表為例子,首先,用ActiveSyn 4.X 同步上PPC模擬器(如果只是匯出註冊表的話,可以不同步,只要開啟模擬器即可);其次,利用Windows Mobile 的Remote Tools(在vs 2005下,叫做 Visual Stidio Remote Tools,可在"開始"->"所有程式->"Microsoft Visual Studio 2005"->"Visual Studio Remote Tools"找到)下的Remote Registry Editor,串連上開啟的模擬器。接著,找到Hanwang的在註冊表中的目錄(在 HKEY_LOCAL_MACHINE\Software\Hanwang),滑鼠點擊下"Hanwang",然後,點擊Remote Registry Editor工具列上的"Registry" ->"Export Registry Files…",然後給匯出的檔案命名並選擇儲存檔案路徑,點擊"儲存",即可匯出檔案。
     注意:如果註冊表中包含中文的話,就無法匯出中文,可能就是一個逗號(,)。
       檔案(需要把副檔名改為reg)的內容如下:
REGEDIT4

[HKEY_LOCAL_MACHINE\Software\HanWang]

[HKEY_LOCAL_MACHINE\Software\HanWang\HangWang Pen for WinCE]
"Study"="0"
"Sound on"="1"
"Screen segment"="1"
"Default input panel"="0"
"Ink speed"="10"
"Ink width"="1"
"Ink color"="0"
"Ink type"="2"
"Recognizer delay"="400"
"Recognizer range"="600E"
       為了檢驗,你需要對以上的檔案目錄進行修改,以示與原來的登錄機碼區別開。
這個註冊表檔案的程式,有可能不全,對於這個Hanwang程式來說。有興趣的可以自己去慢慢研究。
      匯入註冊表檔案
      如果我們直接將以上匯出的註冊表檔案,放到PPC,雙擊該檔案,運行。這個操作在PC上,是沒有任何問題的。但是,在PPC會出現如所示的錯誤:
                         
      原來,“在Windows Mobile上,預設沒有regiedit這樣的程式關聯,不可以自動匯入”。所有,只能通過別的方式匯入。
      奇怪的是,按理說Remote Registry Editor應該有匯入註冊表檔案的功能啊,但是我在Remote Registry Editor沒有找到相應的按鈕操作(當然逐項、逐鍵、逐值建立除外),如果您知道,麻煩告知。
      我選擇的方法是:通過建立Smart CAB Project來將註冊表檔案匯入。
      在Visual Studio 2005 下,依次選擇 "New " ->"Project"->"Other Project Types"->"Setup and Deployment"->"Smart Device CAB Projects",輸入檔案名稱以及選擇路徑,單擊"OK",這樣就建好了工程。接著,單擊在ide裡開啟的工程上方的綠色表徵圖的Registry Editor,在IDE的右邊就會出現Registry On Target Machine以及包含註冊表常用的4個目錄,右擊右邊的綠色表徵圖"Registry Editor"->" Import",將上面匯出的檔案,匯入。
      因為,這個工程裡面有任何檔案,所以,在"Build"的時候,會出現如下的錯誤:
ERROR: You tried to build a setup project but did not include any files.  You must specify at least one file before continuing.
這時候,你可以隨便往工程裡添加一個檔案(右擊工程名,Add->File,添加檔案或者點擊工程名上的File system Editor來進行相應的操作)。
     添加檔案後,"Rebuild",產生CAB檔案,而且你可以在Release檔案夾下找到,inf檔案。
inf檔案中關於註冊表的語句如下:
[RegKeys]
"HKLM","Software\HanWang\HangWang Pen for WinCE","Ink color","0x00000000","0"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Sound on","0x00000000","1"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Default input panel","0x00000000","0"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Ink width","0x00000000","1"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Ink type","0x00000000","2"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Recognizer range","0x00000000","600E"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Ink speed","0x00000000","10"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Study","0x00000000","0"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Recognizer delay","0x00000000","400"
"HKLM","Software\HanWang\HangWang Pen for WinCE","Screen segment","0x00000000","1"
      這樣,你就可以將inf檔案的註冊表語句文法與reg檔案的文法進行對比。可以發現,inf檔案中的0x00000000表示健值是字串類型,而0x00010001是dword類型,但是奇怪的是0x00000002類型,從註冊表中匯出後,再產生INF檔案的時候,卻變成了0x00000000類型,估計0x00000002也是一種字串類型,但是0x0000000與0x00000002這兩種類型有什麼區別呢?有高人知道嗎?
      最後,你可以將CAB檔案拷到模擬器上,運行安裝,這樣,你就可以看看你修改或者寫的註冊表是否正確。由於這個是採用CAB檔案安裝上去的,可以通過刪除程式將其刪除,所以,達不到ROM裡程式的要求,但以上方法,可以作為檢驗reg檔案是否正確以及inf檔案中的[RegKeys]段與reg檔案的轉換的方法。
    在實際的工程中,更為常見的是,先產生應用檔案的CAB檔案,將CAB檔案安裝到Windows Mobile上後,再通過Remote  Registry Editor將應用程式的登錄機碼匯出。甚至,再按照如上的方式,再建個Smart Device CAB Project工程,安裝到Windows Mobile上,以進行檢驗。但是,往往最後這個檢驗過程,沒有必要。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.