runas cuando ya eres administrador

runas cuando ya eres administrador

Algo se me escapa cuando intento usar runas para elevar privilegios. Máquina Win10 simple con un solo usuario que ya tiene derechos de administrador. Necesito escribir una clave de registro específica mediante un script, pero obtengo "acceso denegado" cuando intento usar el comando reg directamente.

> reg ...
ERROR: Access is denied.

Si lo intento:

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

Rechaza mi contraseña de usuario. No creo que haya una contraseña de administrador específica en una máquina local, ¿verdad? No hay otra cuenta. Intentando:

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

Entonces, ¿cómo elevo los privilegios desde la línea de comando? ¿Por qué no puedo ver que tengo derechos de administrador aquí?

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

EDITAR: Quizás debería tener más claro lo que quiero hacer. Desde un programa C quiero hacer un cambio a WT_KEY_HKLM, "Software\Microsoft\Windows\CurrentVersion\Run". Podría hacer esto directamente en XP, pero en versiones más recientes de Windows no tiene ningún efecto. Y, de hecho, ejecutar "reg" en esta clave desde la línea de comando deniega el acceso. No quiero ejecutar mi programa con privilegios elevados, así que mi idea era hacer algo como system("runas reg ...") donde pediría la contraseña y haría el cambio de registro. Pero ni siquiera puedo hacer que el comando funcione desde la línea de comando. ¿Quizás alguien pueda sugerir la forma correcta de hacerlo?

Respuesta1

Reemplaza [usuario] y [comando] con lo que estás intentando usar y prueba esto:

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

Ventajas:

  • Se puede utilizar en un símbolo del sistema no elevado, la ventana Ejecutar y los accesos directos de Windows.
  • Sólo eleva el mando. La elevación se realiza como parte de la ejecución del comando, no de las ventanas de PowerShell.

Contras:

  • Siempre le solicitará su inicio de sesión (no hay forma de guardar las credenciales como se puede hacer con runas). - Esto puede ser un profesional.
  • Habrá un aviso de UAC si UAC está habilitado; esto es inevitable cuando se eleva con UAC.
  • Abre (y cierra) 2 ventanas de PowerShell mientras procesa las credenciales y la elevación.
  • Las comillas en el comando son problemáticas (o al menos se complican RÁPIDAMENTE). Querrá colocar cualquier comando que necesite comillas en un archivo por lotes y ejecutar el archivo por lotes como comando.

Si desea ejecutar este comando desde un símbolo del sistema de PowerShell, puede abreviarlo a esto:

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

S.

Respuesta2

De forma predeterminada, la cuenta de Administrador está bloqueada para que otros no puedan abusar de ella. Si intentó utilizar una contraseña en blanco para el comando "runas /user:Administrator", podrá ver que la cuenta está bloqueada.

Si su usuario ya tiene derechos administrativos, debería poder acceder al comando "reg". En mi máquina, puedo hacerlo.

Desafortunadamente, no puedes usar "runas" para acceder a un comando elevado; debes hacer esto a través de un símbolo del sistema elevado. Esto se puede crear usando el comando "runas" (que en su caso no funcionará) o haciendo clic derecho en "cmd.exe" y seleccionando "Ejecutar como administrador".

Respuesta3

Puede ejecutar la línea de comando como administrador haciendo clic derecho en el icono de la línea de comando o cmd.exe y seleccionando ejecutarlo como administrador. De esa manera estará en un símbolo del sistema elevado y no debería tener el problema que describió. Además, no tendrás que utilizar runas al escribir los comandos.

información relacionada