【问题标题】:How do I give my windows service admin rights如何授予我的 Windows 服务管理员权限
【发布时间】:2023-04-06 14:07:01
【问题描述】:

我有一个 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 安装并将调试器附加到进程,但是没有遇到断点。我已经尝试过启动和停止进程,但无法连接调试器,所以我也可能做错了……现在我假设代码正在运行,但我太愚蠢了,无法让调试器正常工作。也就是说,我认为我的代码需要服务像表单那样具有管理员才能工作。

抱歉,如果不清楚,如果您需要更多信息,我会尽力澄清。

【问题讨论】:

标签: c# windows-services


【解决方案1】:

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

【讨论】:

  • 我试过用户,当服务启动时它要求输入用户名和密码。它每次都回滚安装,我是管理员:-/
  • 使用的用户有 SeServiceLogin 对吗?该权限不是为管理员用户默认设置的。
【解决方案2】:

您可以尝试几个选项。

  1. 添加 app.manifest
  2. 安装window服务后设置服务权限以最高权限运行,也可以设置登录用户的用户名和密码。

【讨论】:

    【解决方案3】:

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

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

    你已经完成了!

    【讨论】:

    • 完全没有回答问题
    猜你喜欢
    • 2015-06-19
    • 2020-12-11
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2013-09-22
    • 2018-11-12
    相关资源
    最近更新 更多