“此应用程序无法启动。”仅当文件位于system32目录中时

我写了一小段从互联网上下载文件的软件,也就是说,仅此而已。 我的意图是通过命令行使用它……它的效果很好,但当我将它放在C:\ Windows \ System32 \中实际使用它时我想要的它现在都不起作用…它没有’抛出exception…它只是向我显示这个消息框 – http://sofzh.miximages.com/c%23/a7rlMgo.png如果我点击“是”它会在浏览器中打开此页面 – http://support.microsoft。 COM / KB / 2715633 / EN-US

我该怎么办才能让它发挥作用?

代码,如果有任何用途..:

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) { 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); } } 

简答:取消选中“首选32位”。

长答案:(不是100%肯定,但这里去)

假设您有64位计算机,请记住System32是为64位应用程序使用而保留的文件夹,尽管看起来很奇怪,但SysWOW64包含32位dll并保留用于32位应用程序。 通常,访问System32的32位应用程序将通过文件系统重定向器到SysWOW64文件夹。 更多信息在这里 。

但是,当您的应用程序(以32位进程运行)在System32本身中运行时,重定向器可能不会执行任何操作,因为它认为不需要重定向,这就是为什么您的应用程序在System32之外工作但不在里面。

因此,为了解决这个问题,取消选中Prefer 32-bit以便它将尝试以64位平台为目标,或者更好 ,将应用程序放在其他位置并将应用程序目录添加到环境路径变量中。 这样你仍然可以在任何地方访问你的应用程序.exe,它不会污染你的System32文件夹,它只能用于Windows文件。

这个答案可能不适用于OP的问题(无论如何已经解决了),但也许是因为搜索到“这个应用程序无法启动”和System32而在这里结束的其他人。在我的情况下,我写了一个屏幕保护程序C#中的程序必须运行32位,解决方案是将其安装在Windows目录中,而不是Windows \ System32中。然后它在32位和64位系统上运行正常。

如果您将32位exe文件放在System32SysWOW64文件夹中。 它工作得很好。 不是一个,不是另一个,而是两个文件夹。

这可能听起来很奇怪,但试试吧。 如果你在两个文件夹中放入相同的exe,它将启动而不做任何修改。

我刚刚将NuGet.exe从c:\ Windows \ System32移动到c:\ Windows,它可以工作。