为什么我不能以编程方式替换windows 7中的perfc009.dat?

时间:2013-05-17 16:24:24

标签: c# windows-7 registry

我们有一个应用程序使用Windows 7性能计数器来跟踪总CPU使用率。 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Perflib \ 009中的注册表经常会损坏,只是为空。

手动执行此处找到的步骤http://support.microsoft.com/kb/300956非常有效。但是,当我创建一个C#程序以编程方式替换所提到的2个文件时没有错误,异常等。但是文件没有保存到正确的目录中。

以下是我用来测试的内容:

    static void Main(string[] args)
    {
        string fileToReadPath1 = @"perfc009.dat";
        string fileToReadPath2 = @"perfh009.dat";

        FileInfo fileToRead1 = new FileInfo(fileToReadPath1);
        FileInfo fileToRead2 = new FileInfo(fileToReadPath2);

        FileInfo fileToReplaceInfo1 = new FileInfo(@"C:\Windows\System32\perfc009.dat");
        FileInfo fileToReplaceInfo2 = new FileInfo(@"C:\Windows\System32\perfh009.dat");

        File.Copy(fileToRead1.FullName, fileToReplaceInfo1.FullName, true);
        File.Copy(fileToRead2.FullName, fileToReplaceInfo2.FullName, true);
    }

我确保使用管理权限运行它。

任何人都知道为什么该程序似乎运行良好,但不能将文件复制到该目录?是否有一些Windows安全措施阻止了这一点?

1 个答案:

答案 0 :(得分:0)

感谢Mike Z和上述评论中分享的链接。事实证明,因为我在32位进程中运行,操作系统不允许它编辑这些文件。编译为64位确实有效。

重新发布链接: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx