寫在前面
轉載請註明作者和出處。
本文的目的不是介紹Tap-Windows6的使用(也不會介紹),而是講解如何編譯,需要使用Tap-Windows6而不關心如何編譯的可以去下載現成的安裝包安裝使用。
網絡上關於Tap-Windows6編譯的教程很少,正好工作需要研究了一下如何編譯它,於是就整理了一下,寫篇教程給需要的人蔘考,少走點彎路。
需要說明一點,Tap-Windows6和Tap-Windows是有差別的!Tap-Windows6支持Win7以上操作系統,Tap-Windows雖然也支持Win7,但是已經好幾年沒更新了,已經淘汰了。
截止2019年7月Tap-Windows6最新版是9.23.3.601。
好了,話不多說,直接進入正題。
非常重要:需要64位操作系統才能完成編譯!
環境搭建
前期準備
下載VS2019: Visual Studio 2019.
下載WDK10: 適用於 Windows 10 版本 1903 的 WDK(10.0.18362.1).
安裝VS1029
- 安裝VS2019,社區版、專業版、企業版都可以,截止2019年7月最新版是16.1.5,可以和舊版VS共存,不需要卸載舊版本。(注意:離線安裝需先導入證書)
- 選擇組件,勾選使用C++的桌面開發
- 切換到單個組件,勾選以下組件:
- 單個組件
- Windows 10 SDK(10.0.18362.0)(後面會解釋爲啥要選它)
- MSVC v142 - VS 2019 C++ x64/x86 Spectre緩解庫(v14.21)
- Python 2 64-bit(2.7.16)
- 其他組件根據自己的需要來選,然後點安裝。
- 如果提示重啓系統,就重啓。如果沒有提示重啓,那麼經過短暫的等待就可以看到VS2019的啓動界面了,安裝成功!
- 點右上角的×關閉VS。
安裝WDK 10
- 運行wdksetup.exe,安裝Windows Driver Kit 10.0.18362.1(支持Win10 1903)。
特別要說明的是,Windows Driver Kit的版本需要與Windows SDK的版本對應,而且Windows Driver Kit帶的插件還要支持VS2019,於是我就下載了最新的18362,省得麻煩,所以安裝VS2019時要勾選SDK 10.0.18362.0。
兩個選項:第一項是在線安裝,第二項是下載後再安裝,建議選第二項以防安裝不成功又要重新在線安裝。
- 安裝的中間過程就跳過不說了,結束時會出現安裝Windows Driver Kit Visual Studio插件的提示,點擊Close開始安裝插件。
- 離線安裝時會提示數字簽名無效,不用管,繼續。
- 如果提示要等待進程結束,有耐心就多等一會,可能前面的安裝任務還在收尾,沒耐心就直接點End Tasks。
- 完成VS插件安裝。
- 如果不僅僅要生成驅動程序,而且還要生成安裝包,那麼請安裝NSIS(如果修改了NSIS安裝路徑,那麼paths.py中NSIS的路徑也要對應修改)。
下載NSIS3.0.4安裝:官網地址.
編譯Tap-Windows6
環境搭好以後,就可以開始編譯工作了。
- 下載tap-windows6-master和devcon(devcon是微軟官方提供的驅動程序開發示例Windows-driver-samples裏面的一個子項,用來安裝、修改、刪除、調整設置驅動程序的),可以用我上傳的,也可以自己從GitHub下載。
-
從Github下載的devcon要複製到tap-windows6-master目錄,注意它們的路徑都不要有中文或者空格。
-
打開devcon文件夾,應能直接看到文件,而不是嵌套着另一個devcon文件夾,路徑不對的自行調整。
-
好了,現在回到tap-windows6-master目錄,可以看到有兩個.py文件,說明該項目是基於Python腳本來編譯的,buildtap.py用來編譯tap-windows6、簽名並生成安裝包,paths.py用來設置企業版WDK(縮寫EWDK)路徑和NSIS(生成安裝包的編譯器)路徑。
之前我被paths.py引入歧途,因爲它裏面設置的是企業版WDK路徑,我就專門去下載了企業版WDK。好傢伙,竟然有12.4GB之多,雖說它自帶編譯工具,但我卻死活用不了,折騰來折騰去浪費了不少時間,勸大家不要去下載嘗試。因爲後面發現根本不需要EWDK!!!差點吐血!!! -
OK,淡定,下面打開version.m4:
這個是Tap-Windows的相關屬性,可以自行修改,其中PRODUCT_TAP_WIN_COMPONENT_ID要確保與OpenVP的一致,默認是tap0901,改完以後記得保存。 -
下面就開始編譯了,從開始菜單找到Developer Command Prompt for VS 2019,打開。
-
定位到buildtap.py所在目錄,輸入下面的
命令
,然後回車。
buildtap.py --ti=devcon --sdk=WDK -b -p
- 1
然後就可以看到花花綠綠的輸出了。
黃的是警告,大多是強制類型轉換引起的,沒什麼影響,其中還有兩段紅色的,是因爲我用不到Arm64構架,沒有裝Arm64的庫(有需要的可以自行安裝),所以報錯,但是x86和x64構架的驅動程序已經成功生成。
最後的IOError是因爲沒有生成Arm64構架的程序,複製到dist目錄的時候找不到這個文件。
正因爲如此,buildtap.py沒有生成安裝包。
- 如果想要生成安裝包,而又不想安裝Arm64的庫的話,就在dist文件夾裏把i386或者amd64文件夾裏的內容複製到arm64文件夾(注意:這樣做是不能在arm64構架的CPU上使用的,有需要的還得老老實實安裝Arm64的庫再編譯),然後再回到Developer Command Prompt for VS 2019,輸入下面的
命令
,回車:
buildtap.py --ti=devcon -p
- 1
出現上面的結果就OK了,返回tap-windows6-master文件夾就能看到安裝包了。
對於Tap-Windows6的編譯介紹到這裏就結束了,至於想要正常安裝使用的話還需要給編譯的驅動程序簽名。不過這又是另外一個話題了,不在本文討論範圍。否則在Win8/Win10上就只能通過禁用驅動程序強制簽名來運行,或者自己做一個CA證書來簽名(需要把這個CA加到受信任的根證書裏)。但是就這樣交付給客戶使用的話很不友好,所以最好還是弄一個正規的簽名。有興趣的可以自己研究一下,編譯的時候帶上–sign可以進行開發者簽名,不過我沒成功,sign文件夾裏還有一些簽名用的工具,我還沒研究過。目錄裏的Tap6.tar.gz可用來提交給微軟進行兼容性認證。
- 最後簡單介紹一下tapinstall.exe(devcon.exe)的用法(命令行),不使用安裝包安裝的可以看一下:
安裝命令:
tapinstall install OemVista.inf tap0901
- 1
更新命令:
tapinstall update OemVista.inf tap0901
- 1
刪除命令:
tapinstall remove tap0901
- 1
後續更新中增加了個全部刪除命令
:
tapinstall removeall
- 1
當然,使用時還要記得把OemVista.inf和tap0901替換爲自己設置的名稱。
驅動安裝成功後會出現一個名爲TAP-Windows Adapter V9的虛擬網卡(如果更改過相關屬性,則會顯示對應的名稱)。
- 可以用openvp.exe檢測功能是否正常,
命令
:
openvp n --show-adapters
- 1
能顯示網絡連接名稱和GUID就說明openvp與虛擬網卡相互匹配且工作正常,否則可能是二者的PRODUCT_TAP_WIN_COMPONENT_ID不匹配,或者其中之一不正常。(本項目未包含openvp.exe)
其他已知的問題
使用Python 3.7會報錯,不知道是不是因爲字符串的處理方式和2.7不一樣造成的。
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
</div>
</article>