0

我面临的问题是...在安装我的 WMI 应用程序(具有混淆的 dll)期间,显示以下错误:方法上 [ManagementBind] 属性的使用不正确。'ak' 类(ak,Myapp.MyProvider,Version=1.3.0.11,Culture=neutral,PublicKeyToken=213fdfdfdf32dfef)定义上的 'a'。它应该在一个静态方法上,并且每个定义的键都应该有一个匹配的参数。"

请让我知道如何解决此错误。

4

1 回答 1

0

混淆 WMI 提供程序中的所有内容听起来不合逻辑。因为元数据(如方法、参数和类的名称)描述了您的 WMI 提供程序如何看待外部。您希望您的 WMI 提供者的用户拥有一个名为 ak 的 WMI 类吗?还有一个名为 a? 的 WMI 方法。我宁愿有一个带有 GetInstances 方法的 MySomethingProvider。

但是,即使您希望您的用户必须处理混淆的名称,我认为这种混淆并不适合托管 WMI 提供程序的元数据的外观。

例如,这里的 ManagementName 属性指向 ID,但我敢打赌,混淆它会给 ID 另一个名称。这就是为什么他们不匹配

[ManagementBind]
static public WIN32ServiceHost GetInstance([ManagementName("ID")] int processId)
{
}

[ManagementKey]
public int ID

混淆后ManagementName中的字符串仍然是ID,但现在属性ID称为A。

[ManagementBind]
static public WIN32ServiceHost a([ManagementName("ID")] int a)
{
}

[ManagementKey]
public int A

因此,要么根本不混淆,要么只混淆不公开的部分或 WMI API 的一部分。

于 2014-06-03T09:58:48.770 回答