System.Diagnostics.Process.Start ne fonctionnera pas au démarrage lorsque compte utilisateur fourni
-
27-10-2019 - |
Question
J'ai une application vb.net 2008 qui est censé exécuter au démarrage. Après avoir rencontré certaines conditions, le PC est censé redémarrer. Voici le code qui échoue:
System.Diagnostics.Process.Start("shutdown", "-r -t 00 -f", myUsername, myPassword, myDomain)
myusername et myDomain sont les deux chaînes en myPassword est un SecureString. L'application fonctionne correctement lorsque exécuter manuellement, mais donner l'erreur suivante lors de l'exécution de la mise en service (soit en plaçant dans le dossier de démarrage ou en ajoutant au Registre):
Le nom du répertoire est invalide
En outre, le programme exécute correctement lorsque les 3 derniers arguments sont laissés et l'utilisateur dispose des droits nécessaires.
Comment forcer un redémarrage à l'aide d'un spécifique, les informations d'identification d'utilisateur de remplacement au démarrage?
La solution
You are starting the process with the current working directory as the default. That can cause problems if that directory isn't valid for the user you specify. Use the Process.Start(ProcessStartInfo) overload instead. Set the ProcessStartInfo.WorkingDirectory to a directory that's good for any user. Like c:\
More info in this KB article.