runas quando você já é administrador

runas quando você já é administrador

Algo me escapa ao tentar usar runas para aumentar o privilégio. Máquina Win10 simples com usuário único que já possui direitos de administrador. Preciso escrever uma chave de registro específica por meio de script, mas recebo "acesso negado" quando tento usar o comando reg diretamente.

> reg ...
ERROR: Access is denied.

Se eu tentar:

> runas /user:Administrator Command
Enter the password for Administrator:
1326: The user name or password is incorrect.

Ele recusa minha senha de usuário. Não creio que exista uma senha de administrador específica em uma máquina local, certo? Não há outra conta. Tentando:

> runas /user:MyUser Command
Enter the password for MyUser:
740: The requested operation requires elevation

Então, como elevo os privilégios da linha de comando?!? Por que não consigo ver que tenho direitos de administrador aqui:

>runas /showtrustlevels
The following trust levels are available on your system:
0x20000 (Basic User)

EDIT: Talvez eu devesse ser mais claro sobre o que quero fazer. Em um programa C, quero fazer uma alteração em WT_KEY_HKLM, "Software\Microsoft\Windows\CurrentVersion\Run". Eu poderia fazer isso diretamente no XP, mas nas versões mais recentes do Windows não tem efeito. E, de fato, executar "reg" nesta chave na linha de comando dá acesso negado. Não quero executar meu programa com privilégios elevados, então minha ideia era fazer algo como system("runas reg ...") onde ele pediria a senha e faria a alteração do registro. Mas não consigo nem fazer o comando funcionar na linha de comando. Talvez alguém possa sugerir a maneira correta de fazer isso?

Responder1

Substitua [usuário] e [comando] pelo que você está tentando usar e experimente:

powershell.exe -ExecutionPolicy Bypass -command "& {Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs'}"

Prós:

  • Ele pode ser usado em um prompt de comando não elevado, na janela Executar e nos atalhos do Windows
  • Ele eleva apenas o comando. A elevação é feita como parte da execução do comando e não da execução das janelas do PowerShell.

Contras:

  • Ele sempre solicitará seu login (não há como salvar credenciais como pode ser feito com runas). - este pode ser um profissional.
  • Haverá um prompt do UAC se o UAC estiver habilitado - isso é inevitável ao elevar com o UAC.
  • Ele abre (e fecha) 2 janelas do PowerShell enquanto processa as credenciais e a elevação
  • As aspas no comando são problemáticas (ou pelo menos ficam complicadas RAPIDAMENTE). Você desejará colocar qualquer comando que precise de aspas em um arquivo em lote e executar o arquivo em lote como o comando.

Se você deseja executar este comando a partir de um prompt do PowerShell, ele pode ser abreviado para isto:

Start-Process powershell.exe -Credential '[user]' -ArgumentList 'Start-Process ""[command]"" -Verb runAs`'

S.

Responder2

Por padrão, a conta do Administrador está bloqueada para que outras pessoas não possam abusar dela. Se você tentou usar uma senha em branco para o comando “runas /user:Administrator”, poderá ver que a conta está bloqueada.

Se o seu usuário já possui direitos administrativos, você poderá acessar o comando “reg”. Na minha máquina, eu sou capaz.

Infelizmente, você não pode usar “runas” para acessar um comando elevado; você deve fazer isso por meio de um prompt de comando elevado. Isso pode ser criado usando o comando “runas” (que no seu caso não funcionará) ou clicando com o botão direito em “cmd.exe” e selecionando “Executar como Administrador”.

Responder3

Você pode executar a linha de comando como administrador clicando com o botão direito no ícone da linha de comando ou cmd.exe e selecionando executá-lo como administrador. Dessa forma, você estará em um prompt de comando elevado e não deverá ter o problema descrito. Além disso, você não precisará usar runas ao digitar os comandos.

informação relacionada