为了账号安全,请及时绑定邮箱和手机立即绑定

怎样实现在程序打开的时候就不能对程序做除了复制之类的其他任何操作,如改名,删除,移动

怎样实现在程序打开的时候就不能对程序做除了复制之类的其他任何操作,如改名,删除,移动

C#
弑天下 2023-03-03 18:14:43
public Form1(){InitializeComponent();System.Diagnostics.Process currentprocess = System.Diagnostics.Process.GetCurrentProcess();System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName(currentprocess.ProcessName);if (myProcesses.Length > 1){MessageBox.Show("当前程序已启动");this.Close();this.Dispose();GC.Collect();}}例如这个,如果打开了一个进程,我把程序复制到其他地方还是打不开,我要能根据当前路径判断的,把程序复制到其他地方就能打开两个还有怎样实现在程序打开后就不能更改程序的名称,在有多个form,并且第一个form会隐藏的情况下拜托给点注释行不,看不太懂,那个run是什么啊?
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

public Form1()
{
InitializeComponent();
System.Diagnostics.Process currentprocess = System.Diagnostics.Process.GetCurrentProcess();
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName(currentprocess.ProcessName);
int count = myProcesses.Where(n => n.MainModule.FileName == currentprocess.MainModule.FileName).Count();
if (count > 1)
{
MessageBox.Show("当前程序已启动");
this.Dispose();
}

}

测试通过(调试模式下测试无效), 用的.NET 3.5 才行


查看完整回答
反对 回复 2023-03-06
?
米脂

TA贡献1836条经验 获得超3个赞

C# 创建互斥进程(程序) 互斥进程(程序), 简单点说,就是在系统中只能有该程序的一个实例运行. 现在很多软件都有这功能,如Maxthon 可以设置为"只允许打开一个窗体",还有Bitcomet等. 我也是看到这些软件的这个功能才来研究这个问题的. 要实现程序的互斥,通常有4中方式,下面用 C# 语言来实现:

实现方式一: 使用线程互斥变量. 通过定义互斥变量来判断是否已运行实例.C#实现如下: 
把program.cs文件里的Main()函数改为如下代码: 
static void Main() 

bool runone; 
System.Threading.Mutex run = new System.Threading.Mutex(true, "jiaao_test", out runone); 
if (runone) 

run.ReleaseMutex(); 
Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(new Form1()); 

else 

MessageBox.Show("已经运行了一个实例了。"); 



正在运行的程序,他的EXE文件是无法删除和移动的,这是windows的文件保护!比如你打开一个word,然后不关掉,你再去删除这个word是删除不掉的。更本不需要你程序去做这个保护!

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信