3

我有一个 winform,允许我使用以下代码启用和禁用我所有 8 岁的网络适配器:

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

使用服务的用户名和密码,并确保启动服务的用户拥有应用程序运行所需的所有权限。如果您可以控制服务,另一种可能性是使用模拟,请参阅: http: //www.codeproject.com/Articles/4051/Windows-Impersonation-using-C

于 2012-10-26T07:11:48.943 回答
0

您可以尝试几个选项。

  1. 添加 app.manifest
  2. 安装window服务后,设置服务权限以最高权限运行,还可以设置登录用户的用户名和密码。
于 2012-10-26T08:34:07.700 回答
-5

如何在 Windows 7 中获得完全管理员权限:

  1. 点击开始
  2. 单击计算机(您可能还会在桌面上找到此图标)。
  3. 右键单击安装操作系统的硬盘图标,然后单击属性。
  4. 单击安全选项卡。
  5. 单击高级选项卡。
  6. 单击位于权限条目列表后的更改权限按钮。
  7. 屏幕上将出现一个新窗口;其中包含所有用户帐户的列表
  8. 选择您想要完全控制您的 Windows 7 的用户帐户)并单击“编辑”按钮。
  9. 现在,勾选标有“Total Control”的复选框,然后按 OK。

你们都完成了!

于 2014-02-17T11:34:20.123 回答