我面临的问题是......在安装我的WMI应用程序(已经混淆了dll)时出现以下错误: 方法上[ManagementBind]属性的使用不正确。 'a'类'ak'(ak,Myapp.MyProvider,Version = 1.3.0.11,Culture = neutral,VersionKeyToken = 213fdfdfdf32dfef)定义。它应该是静态方法,并且每个定义的键应该有一个匹配参数。 “
请告诉我如何解决此错误。
答案 0 :(得分:0)
混淆WMI提供程序中的所有内容听起来不合逻辑。由于元数据(如方法,参数和类的名称)描述了WMI提供程序如何在外部查看。您希望WMI提供程序的用户拥有名为ak的WMI类吗?一个名为?的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的部分进行模糊处理。