c# - "This application could not be started."仅当文件在system32目录下

标签 c# system32

我写了一个从互联网上下载文件的小软件,仅此而已。我的意图是通过命令行使用它...... 它工作得很好,但是当我把它放在 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/

相关文章:

c# - ASP.NET Core 禁用响应缓冲

c# - 找不到合适的方法来覆盖 OnModelCreating()

windows - 为什么复制到 system32 会自动复制到 sysWOW64?

c# - Framework/Framework64 和 System32/Syswow64

c# - 在同一台计算机上的两个程序之间发送和接收 UDP 数据包

c# - 尝试从类访问表单控件时堆栈溢出

windows - 检查另一个进程是否有管理员权限

C++ - 如何读取系统文件

C# 缺少 MSVCR100.dll

c# - 实现插件架构 - 动态 DLL 加载