出于好奇的目的,我试图将一个COM dll复制到System32并注册它。但是在复制时我发现了一个奇怪的行为,这是我的代码:
static void Main(string[] args)
{
try
{
var sysPath = @"C:\Windows\system32\SomeDll.dll";
File.Copy("SomeDll.dll", sysPath, true);
var data = File.ReadAllBytes(sysPath);
}
catch (Exception ex)
{
// Error handling
}
}
File.Copy
正确运行而不会抛出错误,但如果我检查文件系统,我就无法在system32中找到SomeDll.dll。 (甚至试图通过传递完整路径在外部程序中打开它失败)。
然后,data = File.ReadAllBytes(sysPath);
正确运行,数据包含文件的内容。
发生了什么? .NET上是否有阻止我的保护机制?
(应用程序以管理员权限运行)