0

サービスの起動モードが「自動」に設定されているかどうかを知りたい。設定されている場合は「手動」に設定する

私はこのコードを持っています:

        If objService("StartMode").ToString = "Automatic" Then
            objService.ChangeStartMode("Manual")
        End If

しかし、プロジェクトをコンパイルすると、Visual Studio は次のエラーを報告します。

COMException が処理されませんでした: メンバーが見つかりません。(HRESULT からの例外: 0x80020003 (DISP_E_MEMBERNOTFOUND))

If objService("StartMode").ToString = "Automatic" Then

それを解決する方法を教えてください。それは私にとって非常に重要です。ありがとう。

管理者アカウントで Visual Studio 2008、VB.NET、Windows XP Sp3 を使用しています。

4

1 に答える 1

0
    If objService("StartMode").ToString = "Automatic" Then

実行時バインディングを使用しています。これは、プロパティとメソッドを誤って使用するとランタイムエラーが発生する傾向があるCOMオブジェクトを使用する方法です。System.Management名前空間のクラスを使用することで、この種の問題を回避できます。

このステートメントは、思ったとおりに機能しません。インターフェイスのデフォルトプロパティを呼び出し、そのデフォルトプロパティのプロパティゲッターに引数として「StartMode」を渡します。これはそのインターフェイスの正しい使用法ではありません。StartModeはそれ自体がプロパティであり、デフォルトのプロパティではありません。修理:

    If objService.StartMode = "Automatic" Then
于 2012-12-20T20:04:37.737 に答える