我写了一个从互联网上下载文件的小软件,仅此而已。我的意图是通过命令行使用它...... 它工作得很好,但是当我把它放在 C:\Windows\System32\中以便从我想要的任何地方实际使用它时它现在不起作用......它没有抛出异常......它只是告诉我这个消息框- http://i.imgur.com/a7rlMgo.png如果我单击"is",它会在浏览器中打开此页面 - 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);
}
}
最佳答案
简短回答:取消选中“首选 32 位”。
长答案:(不是 100% 确定,但可以)
假设您有一台 64 位机器,请记住 System32 是为 64 位应用程序使用保留的文件夹,虽然看起来很奇怪,但 SysWOW64 包含 32 位 dll 并为 32 位应用程序保留。通常,访问 System32 的 32 位应用程序将通过文件系统重定向器转到 SysWOW64 文件夹。更多信息 here .
但是,当您的应用程序(作为 32 位进程运行)在 System32 本身中运行时,重定向器可能不会执行任何操作,因为它认为不需要重定向,这就是您的应用程序在外部运行的原因System32 但不在其中。
因此,要解决此问题,请取消选中“首选 32 位”,以便它尝试以 64 位平台为目标,...或者更好,将应用程序放在别处并将应用程序目录添加到您的环境中路径变量。这样您仍然可以在任何地方访问您的应用程序 .exe,并且它不会污染您的 System32 文件夹,该文件夹应该只用于 Windows 文件。
关于c# - "This application could not be started."仅当文件在system32目录下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18214983/