C# 调用批处理文件无法将 dll 文件复制到 System32 文件夹
C# calling batch file failed to copy dll files to System32 folder
我创建了一个批处理文件,将一些 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。
太棒了运行ge!
有人遇到过这个问题吗?
编辑:我的问题与这个问题不同:How to write files in C:\Windows\System32 with full permissions
在这里,我得到了允许我获得 运行t 权限以写入 System32 文件夹的弹出窗口。而“copy”命令的输出没有显示“Access Denied”而是“Copied”。
问题是为什么它在显示“已复制”时不包含我的 dll?
如果您的应用程序是 32 位应用程序,则该文件最终将位于 %windir%\SysWOW64 文件夹中。有关详细信息,请参阅 Msdn 上的 this 页面。
您的 32 位应用程序应该能够看到此文件。
我应该指出,将 dll 复制到您的系统文件夹通常不是一个好主意,应尽可能避免。
我创建了一个批处理文件,将一些 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。 太棒了运行ge!
有人遇到过这个问题吗?
编辑:我的问题与这个问题不同:How to write files in C:\Windows\System32 with full permissions
在这里,我得到了允许我获得 运行t 权限以写入 System32 文件夹的弹出窗口。而“copy”命令的输出没有显示“Access Denied”而是“Copied”。 问题是为什么它在显示“已复制”时不包含我的 dll?
如果您的应用程序是 32 位应用程序,则该文件最终将位于 %windir%\SysWOW64 文件夹中。有关详细信息,请参阅 Msdn 上的 this 页面。
您的 32 位应用程序应该能够看到此文件。
我应该指出,将 dll 复制到您的系统文件夹通常不是一个好主意,应尽可能避免。