J'utilise Process.Start() pour initialiser une copie élevée de l'application en cours d'exécution. Malheureusement, Process.Start() renvoie null car il pense utiliser un processus existant de mon application et, bien qu'il existe un processus existant, il ne spécifie aucun moyen de gérer ce type de point d'entrée.Process.Start() renvoie null sur son propre processus
Y at-il un moyen quelconque dans .NET (via la configuration ou autre) que je puisse dire au système de ne pas réutiliser les copies existantes de mon processus? Cette question ne semble se produire sous Windows XP, et non Vista ou 7.
Une copie du code est ci-dessous:
internal static bool EnsureAssociation()
{
// Check to make sure RoketPack is associated.
if (!Protocol.IsAssociated())
{
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = UNC.UniversalApplicationPath;
info.UseShellExecute = true;
if (!UAC.IsAdmin())
info.Verb = "runas"; // Provides Run as Administrator
info.Arguments = "--associate";
Process proc = null;
try
{
proc = Process.Start(info);
}
catch (Win32Exception)
{
Errors.Raise(Errors.ErrorType.ERROR_CAN_NOT_ASSOCIATE_PROTOCOL);
return false;
}
if (null != proc)
{
// Wait until the association is complete.
proc.WaitForExit();
return Protocol.IsAssociated();
}
else
{
Errors.Raise(Errors.ErrorType.ERROR_CAN_NOT_ASSOCIATE_PROTOCOL);
return false;
}
}
else
return true;
}