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 ビット プロセスで実行していたため、OS はこれらのファイルの編集を許可していませんでした。64ビットへのコンパイルはうまくいきました。

リンクの再投稿: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx

于 2013-05-17T22:25:21.333 に答える