Windows Makecat错误:未找到任何成员

Windows Makecat错误:未找到任何成员,windows,winapi,windows-8.1,Windows,Winapi,Windows 8.1,在Windows 8.1(Enterprise/Pro)上运行makecat.exe时遇到问题。我正在尝试为Windows疑难解答平台.diagcab生成一个.cat文件,并获得以下错误 已打开:..\DiagPackage.cdf attribute: OSAttr 失败:未找到任何成员。最后一个错误:0x00000000 失败的0x00000000(0) 在今年一月运行Windows8.1的时候,这对我来说确实有效。但是现在,即使使用与我以前用于生成.cat文件相同的.cdf文件(和脚本)

在Windows 8.1(Enterprise/Pro)上运行makecat.exe时遇到问题。我正在尝试为Windows疑难解答平台.diagcab生成一个.cat文件,并获得以下错误

已打开:..\DiagPackage.cdf

attribute: OSAttr
失败:未找到任何成员。最后一个错误:0x00000000

失败的0x00000000(0)

在今年一月运行Windows8.1的时候,这对我来说确实有效。但是现在,即使使用与我以前用于生成.cat文件相同的.cdf文件(和脚本),也会毫无理由地返回此错误。结果是一个没有文件哈希的.cat文件

下面列出了.cdf文件的内容。还要注意的是,根据sdk文档,文件末尾有一个额外的回车/换行符

[CatalogHeader]
Name=DiagPackage.cat              
PublicVersion=0x0000001
EncodingType=0x00010001
CATATTR1=0x10010001:OSAttr:2:6.1

[CatalogFiles]
<hash>DiagPackage.diagpkg=DiagPackage.diagpkg
<hash>DiagPackage.diagpkgATTR1=0x10010001:Filename:DiagPackage.diagpkg
<hash>D_Main.ps1=D_Main.ps1
<hash>D_Main.ps1ATTR1=0x10010001:Filename:D_Main.ps1
<hash>R_ECP.Diagnostic.UserUpdate.ps1=R_ECP.Diagnostic.UserUpdate.ps1
<hash>R_ECP.Diagnostic.UserUpdate.ps1ATTR1=0x10010001:Filename:R_ECP.Diagnostic.UserUpdate.ps1
[CatalogHeader]
Name=DiagPackage.cat
PublicVersion=0x0000001
编码类型=0x0000001
CATATTR1=0x10010001:OSAttr:2:6.1
[目录文件]
DiagPackage.diagpkg=DiagPackage.diagpkg
DiagPackage.diagpkgATTR1=0x10010001:文件名:DiagPackage.diagpkg
D_Main.ps1=D_Main.ps1
D_Main.ps1ATTR1=0x10010001:文件名:D_Main.ps1
R_ECP.Diagnostic.UserUpdate.ps1=R_ECP.Diagnostic.UserUpdate.ps1
R_ECP.Diagnostic.UserUpdate.ps1ATTR1=0x10010001:文件名:R_ECP.Diagnostic.UserUpdate.ps1
我尝试了8.1版的最新SDK中的makecat.exe(上次更新于2014年5月13日)和存档中的版本(上次更新于2014年4月2日),但都没有成功


有没有人遇到过这个问题并解决了它?

我无法通过Windows 8.1 SDK解决这个问题

然而,我通过以下方式解决了这一问题:

  • 使用ISO版本的“Microsoft Windows SDK for Windows 7和.NET Framework 4”,此版本可从
  • 安装WinSDKTools_x86.msi

makecat.exe的版本为6.1.7600.16385,可与Windows 8.1 Update 1(x64)配合使用。

我在makecat 8.1中遇到类似问题。我可以通过改变cdf文件的编码来解决这个问题。显然,makecat在读取utf-8时遇到问题,更喜欢Windows-1252编码(visual studio中的默认编码)