[英]Deploying NetFwTypeLib to manage the Windows Firewall
我的Windows服務需要從Windows防火牆創建/刪除某些規則。 與此I接口NetFwTypeLib
在<windows>\\system32\\hnetcfg.dll
經由COM。 它在我的64位Windows 7計算機上運行良好 ,但在另一台64位Windows 7計算機上進行測試會引發以下錯誤:
Service cannot be started. System.IO.FileNotFoundException:
Could not load file or assembly 'Interop.NetFwTypeLib,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies.
The system cannot find the file specified.
我有一種感覺,如果我使用我的應用程序嵌入並安裝程序集,我會遇到不同版本的Windows以及32位和64位之間的問題。
如何解決這個缺少的裝配部署問題?
編輯:這似乎是除了4.0之外的任何目標框架的VS2010問題 。 有人有解決方法嗎?
NetFwTypeLib對象不駐留在Windows 7旗艦版的hnetcfg.dll庫中。 相反,它駐留在%system32%\\ FirewallAPI.dll(例如c:\\ windows \\ system32 \\ FirewallAPI.dll)的FirewallAPI.dll中。
使用NetFwTypeLib; //添加引用%SystemRoot%\\ System32 \\ FirewallAPI.dll
在Visual Studio 2012中工作時,我遇到了同樣的問題。對我來說,修復是手動將interop.NetFwTypeLib.dll
移動到我正在使用的目錄中。 這似乎解決了我的問題。 希望能幫助到你
多么奇怪的錯誤啊! 我能想到的最好的是不依賴於DLL
的System32
版本,將其復制到您的文件夾中並從那里調用它。 根據我的知識,我不認為DLL應該與不同的位計算機沖突,但如果他們這樣做,那么只需從32位計算機獲取不同的DLL,並為x64
和x86
單獨下載。 祝好運!
編輯:另外,我在VS2010
3.5或更低編程中遇到了一些麻煩。 嘗試獲取visual c#express 2008的版本並嘗試使用它(通常在降級.net
版本時修復了很多錯誤)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.