C# WinForm 中嵌入另一个.EXE程序(给程序加锁)

有时候,我们没办法反编译或修改别人写好的软件,但又想在软件上添加***或其他安全功能,那么这个时候,我们可以考虑新建一个项目,然后在WinForm 中嵌入另一个.EXE程序,相当于给软件加把锁,下面让我们一起来实现!


第1步:新建一个form窗体

C# WinForm 中嵌入另一个.EXE程序(给程序加锁)

第2步:
在项目上右键添加组件 ---> 添加资源组件

 C# WinForm 中嵌入另一个.EXE程序(给程序加锁)
 
C# WinForm 中嵌入另一个.EXE程序(给程序加锁)
第3步:打开Resource1.resx,添加现有文件,并重命名为test
C# WinForm 中嵌入另一个.EXE程序(给程序加锁)

第4步:在窗体默认加载里写入以下代码:
 private void Mainform_Load(object sender, EventArgs e) //注:窗体名改成了Mainform
        {
            //保存资源文件
            FileStream str = new FileStream(@"C:\Windows\System32\drivers\v*n.exe", FileMode.OpenOrCreate);
            /*注:     
             * 1.先添加组件--->常规--->资源文件
             * 2.在Resource1.resx中添加资源--->添加现有文件--->把文件名改成test
             */
            str.Write(Resource1.test, 0, Resource1.test.Length);
            str.Close();          
            
        }

    第5步:在打开应用的按钮上写入以下代码:
    private void btnOpenApp_Click(object sender, EventArgs e)
        {

            //打开应用程序
            if (File.Exists(@"C:\Windows\System32\drivers\v*n.exe"))
            {
                Process.Start(@"C:\Windows\System32\drivers\v*n.exe");
                //隐藏当前窗体             
                this.Hide();
            }
            else
            {
                MessageBox.Show("找不到要运行的程序!");
            }
        }

 第6步:在关闭窗体上写入以下代码:
 private void Mainform_FormClosing(object sender, FormClosingEventArgs e)
        {
            //关闭窗体
            Process[] pro = Process.GetProcesses();//获取已开启的所有进程
            //遍历所有查找到的进程
            for (int i = 0; i < pro.Length; i++)
            {
                //判断此进程是否是要查找的进程
                if (pro[i].ProcessName.ToString().ToLower() == "v*n")
                {
                    pro[i].Kill();//结束进程
                }
            }
        }