我写了一小段从互联网上下载文件的软件,就是说,仅此而已。我的意图是通过命令行使用它... 它工作得很好,但是当我把它放在C:\ Windows \ System32 \来实际使用它时我想要它现在不起作用...它没有抛出异常...它只是告诉我这个消息框 - http://i.imgur.com/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)
{
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);
}
}
答案 0 :(得分:15)
简答:取消选中“首选32位”。
长答案:(不是100%肯定,但这里有)
假设您有64位计算机,请记住System32是为64位应用程序使用而保留的文件夹,虽然看起来很奇怪,但SysWOW64包含32位dll并保留用于32位应用程序。通常,访问System32的32位应用程序将通过文件系统重定向器到SysWOW64文件夹。更多信息here。
但是,当您的应用程序(以32位进程运行)在System32本身中运行时,重定向器可能不会执行任何操作,因为它认为不需要重定向,这就是您的应用程序在外部工作的原因System32但不在其中。
所以要解决这个问题,取消选中Prefer 32-bit以便它将尝试以64位平台为目标,或者更好,将应用程序放在别处并将应用程序目录添加到您的环境中路径变量。这样你仍然可以在任何地方访问你的应用程序.exe,它不会污染你的System32文件夹,它只能用于Windows文件。
答案 1 :(得分:2)
这个答案可能不适用于OP的问题(无论如何已经解决了),但也许对于那些由于搜索“此应用程序无法启动而在这里结束”的其他人而言。和System32。在我的情况下,我在C#中编写了一个必须运行32位的屏幕保护程序,解决方案是将其安装在Windows目录中,而不是Windows \ System32中。然后它在32位和64位系统上运行正常。
答案 2 :(得分:1)
如果您将32位exe放入 System32 和 SysWOW64 文件夹中。它工作得很好。不是一个,不是另一个,而是两个文件夹。
这可能听起来很奇怪,但试试吧。如果你在两个文件夹中放入相同的exe,它将启动而不做任何修改。
答案 3 :(得分:0)
I just moved the NuGet.exe from c:\Windows\System32 to c:\Windows and it works.
答案 4 :(得分:0)