教你如何在VB.NET可執(zhí)行文件中嵌入一個文本文件
經(jīng)過長時間學(xué)習(xí)VB.NET,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。以前我做程序,版權(quán)使用協(xié)議信息總是放在一個txt文本文件中,打包時和可執(zhí)行文件放在一起,在安裝時釋放到程序的安裝路徑,然后再打開使用。這種做法有兩大壞處,一是這個文件很容易被其它人修改,二是話這種做法太不成熟了?,F(xiàn)在我使用一個新的方法,就是將協(xié)議和可執(zhí)行文件結(jié)合在一起,在程序運行時讀出使用,當(dāng)然這就全靠資源的作用了。
示例 在net中可執(zhí)行文件中嵌入一個文本文件步驟如下:
1、在VB.net中新建一個項目,類型選擇windows應(yīng)用程序,項目名稱改為resourcesample2。
2、點擊項目菜單,選擇添加現(xiàn)有項,接著會彈出一個文件對話框,將文件類型改為所有文件后,選擇要嵌入的txt文件(其實這時你可選擇任意文件,只要你喜歡*-)。接著你會在解決方案資源管理器中發(fā)現(xiàn)你新加入的文件名。如圖:

3、關(guān)鍵的一步到了,在解決方案資源管理器中點擊你剛加入的文件名,然后在屬性窗體中將 "加成操作" 這一屬性改為"嵌入的資源",這將告訴net,剛加入的文件將會作為資源鏈接進(jìn)VB.NET可執(zhí)行文件中。留意一下文件名哦,這在后面的程序中也很重要,強(qiáng)烈建議使用小寫文件名!如下圖:

4、接下就是在程序中用代碼讀出這個文件的內(nèi)容。
在Form1_Click事件中加入代碼,如下所示:
- Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Click
- Dim tobjStream As IO.Stream = Me.GetType.Assembly.GetManifestResourceStream("resourcesample2.License.txt")
- Dim tobjStreamReader As New IO.StreamReader(tobjStream, System.Text.Encoding.Default)
- Dim tstrLicense As String = tobjStreamReader.ReadToEnd
- '如果是圖象就可以使用dim tobjBMP as new bmp(tobjstrem)的方法直接得到資源內(nèi)容
- MessageBox.Show(tstrLicense)'顯示剛才讀得的結(jié)果
- End Sub
在此對上述代碼進(jìn)行一點解釋,net是通過Assembly的GetManifestResourceStream讀出嵌入在VB.NET可執(zhí)行文件的資源并以IO.Stream對象返回(反正得到了這個流,就好象你時進(jìn)行文件流操作,讀/寫到磁盤或象我一樣在程序內(nèi)部處理都由你自己決定了)。這個方法的唯一參數(shù)是資源的唯一標(biāo)識,是按如下方式組成的:程序集的根命名空間+"."+資源在屬性窗口顯示的文件名(這是區(qū)分大小寫的,在上文已提醒你注意了哦,而且這個標(biāo)識法在C#中是不同的,別問我為什么,誰叫你不和我一樣使用VB.net,哼8-)。
程序集的根命空間的名你可以從項目菜單下的XXXX(XXXX是你的項目名稱,可不要認(rèn)為是罵人的話8-)屬性中看到:
其余的代碼就是以流方式讀文件了,很簡單吧。
5、按生成菜單下的生成解決方案,然后到你可執(zhí)文件的目錄下看看,你會發(fā)現(xiàn)除了可執(zhí)行文件外沒有別的文本文件,因為文本文件已以資源的方式存在于VB.NET可執(zhí)行文件中啦。運行一下看看效果啊(一些想做黑客的菜鳥又有什么怪怪的想法,藏木馬?……)
資源的使用就介紹到此為至吧,窗外依然小雨菲菲,在虛幻的網(wǎng)絡(luò)和殘酷的現(xiàn)實邊緣排徊久了,寫文章都有點怪怪的,請大伙兒原諒,祝大伙編程愉快。
【編輯推薦】























