C#调用批处理文件无法将dll文件复制到System32文件夹

时间:2015-05-23 08:47:50

标签: c# batch-file dll windows-7-x64 system32

我创建了一个批处理文件,将一些dll文件复制到System32文件夹中。 我从用C#代码编写的程序中运行了这个批处理:

string path = @"ABC\install.bat";
ProcessStartInfo procStartInfo = new ProcessStartInfo()
{
    UseShellExecute = true,
    CreateNoWindow = false,
    FileName = "\"" + path + "\"",
    //Arguments = "\"" + path + "\""
    Verb = "runas"
};

using (Process proc = new Process())
{
    proc.StartInfo = procStartInfo;
    proc.Start();
}

一切都很好。我收到了弹出消息以确认Windows 7的更改。控制台还证明该文件已被复制:

C:\Program Files\XXX>copy commpro.dll C:\Windows\system32\
    1 file(s) copied.

但是当我查看System32文件夹时,我找不到我的dll。 太奇怪了!

是否有人出现此问题?

编辑:我的问题与此问题不同:How to write files in C:\Windows\System32 with full permissions

在这里,我获得了允许我授予写入System32文件夹权限的弹出窗口。并且“复制”命令的输出未显示“拒绝访问”但“复制”。 问题是为什么它在说“复制”时不包含我的dll?

1 个答案:

答案 0 :(得分:2)

如果您的应用是32位应用程序,则该文件将以%windir%\ SysWOW64文件夹结尾。有关详细信息,请参阅Msdn上的this页面。

您的32位应用程序应该能够看到此文件。

我应该指出,将dll复制到系统文件夹通常是一个坏主意,如果可能的话应该避免。