日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 版 EXE捆绑器

發布時間:2023/12/18 C# 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 版 EXE捆绑器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

C# 版 EXE捆綁器

本人練習寫的,參照網上其它資料.

?

主要功能

1. 將兩個EXE文件合并.

2. 合并后的程序顯示宿主程序的圖標

3. 合并后的程序執行時,同時執行宿主程序與捆綁的程序.

?

用C#制作的捆綁器,不能和C寫的捆綁機相比,不可能用這樣的方法來把XXXXX程序捆綁,畢竟運行這樣的程序還要.net framework 支持. 只為練手

?

?

源代碼下載

?

就貼一下 合并后文件的代碼吧.

合并后文件,主要是分離執行.

?

public ClassHost()
??????? {
??????????? //從自己
??????????? string exePath=Path.GetDirectoryName(Application.ExecutablePath);

??????????? //臨時文件準備
??????????? string sourcetempFile=Path.Combine(exePath,"tempFile.data");
??????????? if (File.Exists(sourcetempFile))
??????????? {
??????????????? File.Delete(sourcetempFile);
??????????? }
??????????? File.Copy(Application.ExecutablePath, sourcetempFile);
??????????? //sourcetempFile = Path.Combine(exePath, "notepad.exe");
??????????? FileStream fileSource = new FileStream(sourcetempFile, FileMode.Open);
??????????? fileSource.Position = fileSource.Length;

??????????? string bandingFile = Path.Combine(exePath, "bandingFile.exe");
??????????? GetFileFromStream(fileSource, bandingFile);

??????????? string customerHostFile=Path.Combine(exePath,"customerHostFile.exe");
??????????? GetFileFromStream(fileSource, customerHostFile);

??????????? fileSource.Close();

??????????? //啟動兩個程序
??????????? StartProcess(customerHostFile);
??????????? StartProcess(bandingFile);
??????????? File.Delete(sourcetempFile);
??????? }

??????? private void GetFileFromStream(FileStream fileSource,string fileName)
??????? {
??????????? FileStream targetFile = new FileStream(fileName, FileMode.Create);

??????????? byte[] buffer=new byte[8];
??????????? fileSource.Seek(-8, SeekOrigin.Current);
??????????? fileSource.Read(buffer, 0, 8);
??????????? long fileLength = BitConverter.ToInt64(buffer, 0);

??????????? buffer = new byte[1024];
??????????? fileSource.Seek(-1*(fileLength + 8), SeekOrigin.Current);
??????????? int count = Convert.ToInt32(fileLength / buffer.Length);
??????????? int mode = Convert.ToInt32(fileLength % buffer.Length);
??????????? for (int i = 0; i < count; i++)
??????????? {
??????????????? fileSource.Read(buffer, 0, buffer.Length);
??????????????? targetFile.Write(buffer, 0, buffer.Length);
??????????? }
??????????? if (mode !=0)
??????????? {
??????????????? fileSource.Read(buffer, 0, mode);
??????????????? targetFile.Write(buffer, 0, mode);
??????????? }
??????????
??????????? targetFile.Flush();
??????????? targetFile.Close();
??????????? fileSource.Seek(-1*fileLength, SeekOrigin.Current);
??????? }

??????? private void StartProcess(string fileName)
??????? {
??????????? if (File.Exists(fileName))
??????????? {
??????????????? System.Diagnostics.Process.Start(fileName);
??????????? }
??????? }

總結

以上是生活随笔為你收集整理的C# 版 EXE捆绑器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。