一、場景:spa
發到客戶那的程序中使用的一個C++的庫須要被替換,而該庫在使用了前使用了md5進行檢驗防止其它假裝的庫將其替換,於是替換時要算目標庫的code
md5,並把使用該庫的另外一個庫也換掉。blog
二、涉及技術:md5
作一個離線補丁包去升級程序,並將庫文件集成到其中,程序運行時再將其釋放出來。資源
三、解決方法:get
將目標庫當成資源添加到工程中,並在須要時調用它寫入文件string
1 private bool GetFileFromAssembly(String fileName, String targetFilePath) 2 { 3 byte[] bs = null; 4 String fileNameWithoutExtension = fileName.Substring(0, fileName.Length - 4); 5 MemoryStream ms = null; 6 FileStream fs = null; 7 8 try 9 { 10 bs = (byte[])Properties.Resources.ResourceManager.GetObject(fileNameWithoutExtension); 11 ms = new MemoryStream(bs); 12 fs = new FileStream(targetFilePath, FileMode.Create); 13 ms.WriteTo(fs); 14 } 15 catch (System.Exception ex) 16 { 17 return false; 18 } 19 finally 20 { 21 ms.Close(); 22 fs.Close(); 23 } 24 return true; 25 }
四、相關程序:it