0

我们有一个应用程序使用 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 安全措施阻止了这一点?

4

1 回答 1

0

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

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

于 2013-05-17T22:25:21.333 回答