0

私が直面している問題は、WMI アプリケーション (難読化された dll を含む) のインストール中に次のエラーが表示されることです: メソッドの [ManagementBind] 属性の使用法が正しくありません。クラス 'ak' の 'a' (ak、Myapp.MyProvider、Version=1.3.0.11、Culture=neutral、PublicKeyToken=213fdfdfdf32dfef) の定義。これは静的メソッド上にある必要があり、定義されたキーごとに 1 つの一致するパラメーターが存在する必要があります。"

このエラーを解決する方法を教えてください。

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 に答える