我需要在用户不应具有管理员权限的计算机上自动重新启动图形驱动程序。我的归档选项是使用 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 ,它什么也不做,并且会自行关闭,并且不会显示错误消息。
我错过了什么吗?
眼眸繁星
相关分类