Solução de um gesto para desativar / ativar um dispositivo no gerenciador de dispositivos (sem uma ferramenta de terceiros)?

2

Para superar um bug irritante no Windows 10, encontrei uma solução. O problema é que é muito clicar e eu gostaria de automatizar as etapas (script?), Se possível. Aqui está o contexto do Reddit:

There is an easier fix though than restarting, if you go to Device Manager, then under Sound, Video and Game controllers, find: Intel Display Audio and disable then re-enable and it should fix it.

Há uma resposta mostrando como fazer isso na linha de comando com uma ferramenta de terceiros (devcon) . Mas eu não estou feliz em instalar / manter e nem tenho certeza se ele funciona no Windows 10. Eu gostaria de poder fazer isso sem quaisquer ferramentas de terceiros.

Não precisa ser um script de linha de comando. Eu gostaria apenas de poder fazer isso em um único gesto (o clique duplo de um ícone no desktop é bom, talvez um comando da Cortana possa fazer isso?).

    
por Fuhrmanator 10.01.2017 / 19:57

3 respostas

1

Com base na minha pesquisa e como o comando funciona para você (conforme o seu comentário), aqui está o script final que pode funcionar como "um gesto". Eu adicionei no início algumas instruções para executar como admin automaticamente (auto elevado). Isso só funcionará se o usuário for o administrador do computador, é claro.

O script final, você pode salvar como arquivo '.ps1' e executar com o PowerShell:

# Get the ID and security principal of the current user account
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)

# Get the security principal for the Administrator role
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator

# Check to see if we are currently running "as Administrator"
if ($myWindowsPrincipal.IsInRole($adminRole))
{
    # We are running "as Administrator" - so change the title and background color to indicate this
    $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"
    $Host.UI.RawUI.BackgroundColor = "DarkBlue"
    clear-host
}
else
{
    # We are not running "as Administrator" - so relaunch as administrator

    # Create a new process object that starts PowerShell
    $newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";

    # Specify the current script path and name as a parameter
    $newProcess.Arguments = $myInvocation.MyCommand.Definition;

    # Indicate that the process should be elevated
    $newProcess.Verb = "runas";

    # Start the new process
    [System.Diagnostics.Process]::Start($newProcess);

    # Exit from the current, unelevated, process
    exit
}
Get-PnpDevice -FriendlyName "Intel(R) Display Audio" | Disable-PnpDevice -confirm:$false
Get-PnpDevice -FriendlyName "Intel(R) Display Audio" | Enable-PnpDevice -confirm:$false
    
por 12.01.2017 / 08:44
0

Eu tive alguns problemas para obter o script do @ Ob1lan para trabalhar fora da caixa, porque para que isso funcione (ou seja, para permitir que um script para elevar-se), o Política de Execução do Powershell tem que permitir isso. Uma maneira de fazer isso é defini-lo globalmente usando Set-ExecutionPolicy . Minha preferência é, no entanto, deixar a política global intocada e ignorá-la sempre que necessário usando o argumento -ExecutionPolicy ByPass .

Então, abaixo está o script ligeiramente modificado, já que estou usando agora para desativar minha tela de toque. Além de adicionar o bypass, também adicionei o argumento -WindowStyle hidden para evitar que muitas janelas poluam minha tela. (Dica: se o script não funcionar como desejado, recomendo que você primeiro substitua esse argumento pelo argumento -noexit para ver qualquer mensagem de erro.)

# Get the ID and security principal of the current user account
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)

# Get the security principal for the Administrator role
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator

# Check to see if we are currently running "as Administrator"
if ($myWindowsPrincipal.IsInRole($adminRole))
{
    # We are running "as Administrator" - so change the title and background color to indicate this
    $Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + " (Elevated)"
    $Host.UI.RawUI.BackgroundColor = "DarkBlue"
    clear-host
}
else
{
    # We are not running "as Administrator" - so relaunch as administrator

    # Create a new process object that starts PowerShell
    $newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";

    # Specify the current script path and name as a parameter, hide window and bypass execution policy (in case it has not been disabled globally)
    $newProcess.Arguments = '-ExecutionPolicy ByPass -WindowStyle hidden ' + $myInvocation.MyCommand.Definition + '" ';
    # Here are the changes   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    # Indicate that the process should be elevated
    $newProcess.Verb = "runas";

    # Start the new process
    [System.Diagnostics.Process]::Start($newProcess);

    # Exit from the current, unelevated, process
    exit
}

 Get-PnpDevice | Where-Object {$_.FriendlyName -like '*touch screen*'} | Enable-PnpDevice -Confirm:$false
    
por 10.10.2018 / 16:18
-1

Esta solução simples funcionou para mim.

  • Crie um atalho do Windows com este Alvo: %código%
  • Nas propriedades do atalho > Atalho > Propriedades avançadas , marque "Executar como administrador"

São finalmente DOIS gestos, já que você precisa permitir a elevação de permissão. Quando eu tentei a resposta do @ Ob1lan , eu também tive que clicar para permitir a elevação (o segundo gesto). Então, esta não é uma resposta ideal de acordo com a pergunta original. Nota: Desativar / ativar manualmente o dispositivo (conforme descrito na pergunta) não requer elevação.

O motivo pelo qual evitei o arquivo de script (.ps1) é que ele requer um conjunto adicional de soluções alternativas devido à segurança e, embora haja muita verificação do administrador, ele não agrega mais valor ao marcar o atalho "Executar como administrador "opção. Consulte o link para obter mais informações.

    
por 12.01.2017 / 20:01