如何在没有管理员权限的情况下使用 Powershell 或 C# 重新启动图形驱动程序

我需要在用户不应具有管理员权限的计算机上自动重新启动图形驱动程序。我的归档选项是使用 powershell 或从 powershell 调用的 C# 代码。

这个问题中提到了重新启动图形驱动程序的最简单方法: PowerShell禁用和启用驱动程序

 $d = Get-PnpDevice| where {$_.class -like "Display*"}
 $d  | Disable-PnpDevice -Confirm:$false
 $d  | Enable-PnpDevice -Confirm:$false

但我无法使用它,因为它需要管理员权限才能执行。第二种也是更好的方法是使用 win + ctrl + shift + b 热键,它不需要管理员权限。我在这个网站上找到了一个如何组合按下 win 键的好例子:https://github.com/stefanstranger/PowerShell/blob/master/WinKeys.ps1

并根据我的需要构建它。

我的实际代码是这样的:

    $source = @"

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Runtime.InteropServices;

    using System.Windows.Forms;

    namespace KeyboardSend

    {

        public class KeyboardSend

        {

            [DllImport("user32.dll")]

            public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

            private const int KEYEVENTF_EXTENDEDKEY = 1;

            private const int KEYEVENTF_KEYUP = 2;

            public static void KeyDown(Keys vKey)

            {

                keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);

            }

            public static void KeyUp(Keys vKey)

            {

                keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

            }

        }

    }



# 163 = ctrl key

# 161 = shift key

# 66 = b key

如果我尝试除了 win + e 之外的其他组合来打开资源管理器,它就可以正常工作。但是,如果我想输入 win + ctrl + shift + b ,它什么也不做,并且会自行关闭,并且不会显示错误消息。


我错过了什么吗?


牧羊人nacy
浏览 105回答 1
1回答

眼眸繁星

对于未来的读者。代码运行良好,但我公司 AD 中的组策略导致执行失败。不管怎样,我的主管决定采用一种不同的方式来测试数百个组策略的错误。
打开App,查看更多内容
随时随地看视频慕课网APP