共用方式為


處理重複的實例名稱

雖然強烈建議提供者使用唯一實例名稱,但並非所有提供者都這樣做。 顯示重複實例名稱的慣例是將字元和序號附加 # 至實例名稱,但名稱第一次出現除外。 例如,如果範例中有三個 實例 svchost ,三個名稱會顯示為 svchostsvchost#1svchost#2

不幸的是,此慣例無法完全解決問題。 序號會根據特定實例名稱出現在範例中的順序來指派,而且這個順序可能會不一致地從樣本到樣本。 例如,範例 A 可能會看到 svchost (PID 100)、 svchost#1 (PID 200) 和 svchost#2 (PID 300)。 然後,如果具有 PID 100 的 svchost 關閉,則下一個範例會看到 svchost (PID 200) 和 svchost#1 (PID 300)。 基本比對邏輯會嘗試比對範例 A 的 svchost#1 統計資料(從 PID 200)與範例 B 的 svchost#1 統計資料(來自 PID 300),導致範例 B 的結果無效。當範例中出現新的非唯一實例時,或當非唯一實例停止顯示在範例中時,就會發生錯誤(除非新增/移除的實例是最後一個。

進程計數器集

這個問題對於計數器集來說特別有問題 Process ,因為它只會使用進程的 EXE 名稱做為實例名稱,即使 EXE 名稱不是唯一的。 由於相容性問題,無法在 Windows 上變更計數器集的預設行為 Process

提示

Windows 11 和更新版本包含新的 Process V2 計數器集。 Process V2計數器集包含實例名稱中的進程識別碼 (PID),以避免計數器集的名稱重複問題 Process

您可以藉由在登錄機碼下設定 ProcessNameFormatThreadNameFormat 登錄值,來變更 和 Thread 計數器集的行為 Process ,以使用唯一 HKLM\System\CurrentControlSet\Services\Perfproc\Performance 的實例名稱。

警告

啟用計數器集的唯一實例名稱 Process 可能會導致某些程式的行為不正確,因為許多程式預期非唯一的命名模式。 例如,尋找具有特定已知 EXE 名稱之實例的程式,在啟用唯一實例名稱之後將無法再找到該實例。

這些值的登錄類型為 REG_DWORD 。 將 值設定為 2 將進程識別碼 (PID) 附加至進程實例名稱,並將執行緒識別碼 (TID) 附加至執行緒實例名稱。 若要停用此功能,請將值設定為 1 或刪除值。