Pour empêcher l'utilisateur d'exécuter plusieurs instances de mon application, je me sers de ce code: -identification propre nom de processus en C#
Process[] pArry = Process.GetProcesses();
int nCount = 0;
foreach (Process p in pArry)
{
string ProcessName = p.ProcessName;
ProcessName = ProcessName.ToLower();
if (ProcessName.CompareTo("myApp") == 0)
{
nCount++;
}
}
if (nCount > 1)
{
MessageBox.Show(AppAlreadyRunning,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
Process.GetCurrentProcess().Kill();
}
Mais comme nous le savons, les changements processus de nom si modifier le nom exe. Donc, si l'utilisateur change "myApp.exe" en "UserApp.exe", ce correctif ne fonctionnera pas! Y a-t-il un moyen de s'en sortir? J'utilise C# dans VS2010. Merci!
Merci .... Bien que j'ai cherché d'abord, je ne pouvais pas le trouver ... Ce fil est vraiment utile! – Swanand
L'utilisation +1 d'une construction en mode noyau telle que mutex est certainement la meilleure façon de le faire (bien que l'utilisation d'un sémaphore ait légèrement moins de frais généraux). Il est facile de changer le nom du processus d'une seconde instance pour éviter une vérification qui repose sur les noms de processus. –