3

次のコードを使用して、8 歳のネットワーク アダプターをすべて有効または無効にできる winform があります。

protected override void OnStart(string[] args)
    {
        //start timer
        SelectQuery query = new SelectQuery("Win32_NetworkAdapter","NetConnectionStatus=2");
        ManagementObjectSearcher search = new ManagementObjectSearcher(query);
        foreach (ManagementObject result in search.Get())
        {
            NetworkAdapter adapter = new NetworkAdapter(result);

            adapter.Disable();
            enabled = false;

        }

        InternetCheckTimer.Start();
    }

このコードは、私が管理者で実行していると仮定して、win フォームで正常に動作します。これまで win サービスを作成したことがないため、installutill を使用してインストールし、プロセスにデバッガーをアタッチすることはできますが、ブレーク ポイントにヒットしません。プロセスの開始と停止を試みましたが、デバッガーをアタッチできないため、間違っている可能性があります...現在、コードが実行されていると想定しており、デバッガーを動作させるにはあまりにも愚かです。そうは言っても、私のコードでは、サービスが機能するためにフォームのように管理者を持つ必要があると思います。

これが不明確である場合は申し訳ありませんが、さらに情報が必要な場合は、それを明確にするために最善を尽くします.

4

3 に答える 3

0

サービスのユーザーとパスワードを使用し、サービスを開始するユーザーがアプリケーションの実行に必要なすべての権限を持っていることを確認します。サービスを制御できる場合のもう1つの可能性は、偽装を使用することです。http://www.codeproject.com/Articles/4051/Windows-Impersonation-using-Cを参照してください。

于 2012-10-26T07:11:48.943 に答える
0

いくつかのオプションを試すことができます。

  1. app.manifest を追加
  2. ウィンドウ サービスをインストールした後、最高の権限で実行するようにサービスのアクセス許可を設定します。また、ログインしているユーザーのユーザー名とパスワードを設定することもできます。
于 2012-10-26T08:34:07.700 に答える