亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

怎樣實現在程序打開的時候就不能對程序做除了復制之類的其他任何操作,如改名,刪除,移動

怎樣實現在程序打開的時候就不能對程序做除了復制之類的其他任何操作,如改名,刪除,移動

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 關注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號