“Cette application n'a pas pu démarrer.” Uniquement lorsque le fichier est dans le répertoire system32
J'ai écrit un petit morceau de logiciel qui télécharge un fichier à partir d'internet, qui est, rien de plus. Mes intentions sont de l'utiliser à travers la ligne de commande...
Il fonctionne très bien, mais quand je le place dans C:\Windows\System32\ à fait l'utiliser de partout, je veux qu'il ne fonctionne pas aujourd'hui... Il ne lance pas d'exception... il vient de me montrer ce messagebox - http://i.imgur.com/a7rlMgo.png et si je clique sur "Oui", il ouvre cette page dans le navigateur - http://support.microsoft.com/kb/2715633/en-us
Que dois-je faire pour le faire fonctionner?
Le code si il est de toute utilisation.. :
private const string InsufficientParametersMessage = "Insufficient Parameters...";
private static string[] _arguments;
static void Main(string[] args)
{
_arguments = args;
TakeCommand();
Environment.Exit(0);
}
private static void TakeCommand()
{
if (_arguments.Length < 1)
{
Console.WriteLine(InsufficientParametersMessage);
}
else if (_arguments.Length == 1)
{
DownloadFile(_arguments[0]);
}
else if (_arguments.Length > 1)
{
DownloadFile(_arguments[0], _arguments[1]);
}
}
private static void DownloadFile(string url)
{
DownloadFile(url, Path.GetFileName(url));
}
private static void DownloadFile(string url, string localFileName)
{
WebClient client = new WebClient();
if (File.Exists(localFileName))
{
File.Delete(localFileName);
}
try
{
client.DownloadFile(url, localFileName);
Console.WriteLine("Done...");
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
}
"L'application n'est pas configuré de manière qu'il est possible de déterminer la version appropriée de l' .NET Framework runtime." -- Quelle est la version du runtime ciblez-vous dans Visual Studio?
i.imgur.com/247913M.png
i.imgur.com/XLpjGXF.png est-ce?
Est .NET 4.5 est installé sur le système?
Il est installé, c'est le système que je suis en développement sur... ça me dérange qu'il fonctionne très bien partout ailleurs, mais dans system32... "ciblez-vous 64 bits ou 32 bits?" Je ne m'inquiète pas... j'ai juste envie de travailler..
i.imgur.com/247913M.png
i.imgur.com/XLpjGXF.png est-ce?
Est .NET 4.5 est installé sur le système?
Il est installé, c'est le système que je suis en développement sur... ça me dérange qu'il fonctionne très bien partout ailleurs, mais dans system32... "ciblez-vous 64 bits ou 32 bits?" Je ne m'inquiète pas... j'ai juste envie de travailler..
OriginalL'auteur kendos | 2013-08-13
Vous devez vous connecter pour publier un commentaire.
Réponse courte: Décochez la case "Préfèrent 32 bits".
Réponse longue: (Pas sûr à 100% mais va ici)
En supposant que vous avez un ordinateur 64 bits, gardez à l'esprit que System32 est un dossier qui est réservé pour la version 64 bits de l'utilisation des applications, et même si cela peut sembler étrange, SysWOW64 contient 32 bits dll et est réservé pour les applications 32 bits. Généralement, les applications 32 bits que l'accès System32 va passer par un redirecteur de système de fichier pour le dossier SysWOW64. Plus d'infos ici.
Toutefois, lorsque votre application (qui s'exécute comme un processus 32 bits) s'exécute dans System32 lui-même, le redirecteur n'a probablement rien faire, car il pense qu'il n'y a pas besoin de rediriger, c'est pourquoi votre application fonctionne en dehors de System32 mais pas à l'intérieur.
Donc pour résoudre cela, décochez Préfèrent 32-bits, de sorte qu'il va essayer de cibler plate-forme 64 bits, ... ou mieux encore, mettre l'app ailleurs et ajouter le répertoire de l'application à votre variable d'environnement path. De cette façon, vous pouvez toujours accéder à votre demande .exe n'importe où, et il ne pollue pas votre dossier System32 qui ne devrait être utilisé pour les fichiers de Windows de toute façon.
grand.. "mettre de l'app ailleurs et l'ajouter dans la variable d'environnement path" a fonctionné pour moi..
Pour ceux qui ne connaissent pas déjà: "Préférez 32 bits" la propriété est sur l'onglet de la page de propriétés du projet dans Visual Studio.
OriginalL'auteur gitsitgo
Cette réponse peut ne pas être applicable à l'OP du problème (ce qui a été résolu de toute façon), mais peut-être que pour d'autres, qui se retrouvent ici en raison d'une recherche sur “Cette application n'a pas pu démarrer" et System32. Dans mon cas, j'avais écrit un screensaver programme en C# qui avait pour exécuter 32 bits, et la solution a été d'installer dans le répertoire Windows, pas Windows\System32. Ensuite, il fonctionne sur les versions 32 et 64 bits des systèmes.
OriginalL'auteur RenniePet
Si vous mettez votre 32-bit exe dans les deux System32 et la SysWOW64 dossier. Il fonctionne très bien. Pas un, ni l'autre, mais les deux dossiers.
Cela peut paraître étrange, mais l'essayer. Si vous mettez le même exe dans les deux dossiers, il va commencer sans aucune modification.
L'OP essayait de mettre son application en ligne de commande "Mes intentions sont à l'utiliser à travers la ligne de commande". "il vient de me montrer ce messagebox". Il obtient ce message, car son application n'est pas dans le dossier SysWOW64. S'il met son application dans ce dossier également. Il va travailler. Il obtiendra pas la “Cette application n'a pas pu démarrer.” message d'erreur. C'est une solution à son problème et une réponse à sa question.
Votre réponse s'étend à d'autres applications de trouver le programme spécifié. Certains regardent dans System32, d'autres regardent dans SysWOW64, et si vous êtes de le mettre dans les deux afin que toutes les applications vont le trouver. Mais la question ici est de parler d'un programme qui, même si elle est déjà trouvé, ne peut pas être démarré.
Oui. C'est exactement le même problème que j'ai eu avec NuGet.exe. Si vous mettez NuGet.exe dans System32 vous vill obtenez exactement la même eror message “Cette application n'a pas pu démarrer.” Si vous mettez NuGet.exe dans les deux System32 et SysWOW64 il fonctionne. Si vous le mettez dans System32, vous obtiendrez le message d'erreur. Si vous le mettez dans SysWOW64 windows ne le trouve pas. Si vous le mettez dans les deux répertoires, sans aucun changement pour le fichier exe. Il va travailler! Non, il n'a pas un problème avec NuGet.exe. Mais c'est exactement la même question et une réponse à la discussion de la question: "Que dois-je faire pour vous?"
Ah, ok, ce n'était pas clair à partir de votre réponse. Cela me semble improbable pour être vraiment le cas, ça semble être une phase de test s'est passé, mais je ne peux pas tester moi-même maintenant, et si vous n'obtenez votre test de droite, alors je suis d'accord, votre réponse est parfaitement valide.
OriginalL'auteur David
J'ai juste déplacé le NuGet.exe à partir de c:\Windows\System32 pour c:\Windows et il fonctionne.
OriginalL'auteur Jiří Herník