Event Tracing for Windows (ETW) プロバイダー マニフェストを取得して、適切なチャネル名を登録しようとしています。マニフェスト (以下に含まれています) を使用すると、次の結果が得られます。ただし、マニフェストと、レジストリ (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT に格納されている) 内の All-User-Install-Agent マニフェストの結果との違いを調べると、キーは Foo-Bat-TestApp/ プレフィックスで表示されています。プレフィックスを削除するにはどうすればよいですか? 「運用」名を使用する OS コンポーネントが既に存在するため、名前属性からそれらを削除できません (これはレジストリ内のフラット リストです)。
サンプル マニフェストは次のようになります。
<?xml version="1.0" encoding="utf-16"?>
<instrumentationManifest
xmlns="http://schemas.microsoft.com/win/2004/08/events"
xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<instrumentation>
<events>
<provider name="Foo-Bar-TestApp"
guid="{C5C633DC-FB7E-4EA0-80EC-C683FA52561C}"
symbol="EtwProvider"
resourceFileName="C:\Projects\ETWTest\bin\Debug\ETWTest..dll"
messageFileName="C:\Projects\ETWTest\bin\Debug\ETWTest.dll">
<channels>
<channel name="Foo-Bar-TestApp/Admin"
chid="Admin"
type="Admin"
enabled="true" />
<channel name="Foo-Bar-TestApp/Operational"
chid="Operational"
type="Operational"
enabled="true" />
<channel name="Foo-Bar-TestApp/Debug"
chid="Debug"
type="Debug"
enabled="false" />
</channels>
<keywords>
<keyword name="KeywordA" symbol="READ_KEYWORD" mask="0x1" />
<keyword name="KeywordB" symbol="WRITE_KEYWORD" mask="0x2" />
</keywords>
<events>
<event version="1"
value="1"
symbol="SampleEvent"
channel="Operational"
level="win:Informational"
message="$(string.Event.SampleEvent)"
keywords="KeywordA" />
</events>
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="Event.SampleEvent" value="This is a sample event"/>
</stringTable>
</resources>
</localization>
</instrumentationManifest>