runas quando você já é administrador

1

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

> 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.

Recusa minha senha de usuário. Eu não acho que há uma senha específica de administrador 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 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)

EDITAR: Talvez eu deva ser mais claro sobre o que quero fazer. De um programa em C, quero fazer uma alteração em WT_KEY_HKLM, "Software \ Microsoft \ Windows \ CurrentVersion \ Run". Eu poderia fazer isso diretamente no XP, mas em versões mais recentes do Windows, não tem efeito. E, de fato, executar "reg" nessa chave a partir da linha de comando dá acesso negado. Eu não quero executar o meu programa com privilégios elevados, então muy idéia era fazer algo parecido com o sistema ("runas reg ..."), onde seria pedir a senha e fazer o registro mudar. Mas eu não consigo nem pegar o comando para trabalhar na linha de comando. Talvez alguém possa sugerir a maneira correta de fazer isso?

    
por dargaud 13.01.2017 / 15:09

3 respostas

1

Por padrão, a conta de administrador está bloqueada para que outros não possam abusar dela. Se você tentou usar uma senha em branco para o comando "runas / user: Administrator", pode ver que a conta está bloqueada.

Se o seu usuário já tiver direitos administrativos, você poderá acessar o comando "reg". Na minha máquina, eu posso.

Infelizmente, você não pode usar "runas" para acessar um comando elevado; você deve fazer isso através 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 do mouse em "cmd.exe" e selecionando "Executar como administrador".

    
por 13.01.2017 / 15:57
1

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:

  • Pode ser usado em um prompt de comando não aumentado, a janela Executar & atalhos do Windows
  • Ele eleva apenas o comando. A elevação é feita como parte da execução do comando que não está executando as janelas do PowerShell.

Contras:

  • Ele sempre solicitará seu login (não é possível salvar credenciais, como pode ser feito com runas). - isso pode ser um profissional.
  • Haverá um prompt do UAC se o UAC estiver ativado - isso é inevitável ao elevar com o UAC.
  • Ele abre (e fecha) duas janelas do PowerShell durante o processamento das credenciais e da elevação
  • As cotações no comando são problemáticas (ou pelo menos complicadas). Você desejará colocar qualquer comando que precise de cotações em um arquivo em lote e executar o arquivo em lote como o comando.

Se você deseja executar esse comando a partir de um prompt do PowerShell, ele pode ser reduzido para isso:

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

S.

    
por 11.05.2017 / 17:42
0

Você pode executar a linha de comando como um Administrador clicando com o botão direito do mouse no ícone da linha de comando ou cmd.exe e selecionando para executá-lo como um 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.

    
por 13.01.2017 / 15:25