为什么我不能在windows 7中编程替换perfc009.dat

本文关键字:编程 替换 perfc009 dat 不能 windows 为什么 | 更新日期: 2023-09-27 18:14:20

我们有一个应用程序,它使用Windows 7性能计数器来跟踪总CPU使用情况。每过一段时间,HKEY_LOCAL_MACHINE'SOFTWARE'Microsoft'Windows NT'CurrentVersion'Perflib'009的注册表就会被损坏,只是空的。

手动按照这里找到的步骤http://support.microsoft.com/kb/300956工作完美。但是,当我编写c#程序以编程方式替换上述两个文件时,没有错误,异常等。但是文件没有保存到正确的目录。

下面是我用来测试的代码:

    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的安全问题阻止了这个吗?

为什么我不能在windows 7中编程替换perfc009.dat

感谢Mike Z和上面评论中分享的链接。结果因为我运行的是32位进程,操作系统不允许编辑这些文件。编译到64位可以工作。

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