Jump to content


Photo

Eliminar la opción "Ejecutar como Administrador" del menú del botón derecho del ratón


  • Please log in to reply
4 replies to this topic

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 13 April 2018 - 04:27 PM

Seguro que alguien ha tenido la necesidad de desactivar la opción de "Ejecutar como Administrador" del menú del botón derecho del ratón. Sin ir muy lejos me lo preguntaron recientemente. Una opción para realizar esto es el registro de Windows. Las eliminación de siguientes claves consigue el efecto deseado:

delphi
  1. HKEY_CLASSES_ROOT\batfile\shell\runas
  2. HKEY_CLASSES_ROOT\cmdfile\shell\runas
  3. HKEY_CLASSES_ROOT\cpfile\shell\runas
  4. HKEY_CLASSES_ROOT\exefile\shell\runas
  5. HKEY_CLASSES_ROOT\mscfile\shell\runas

Pero eliminar sin un backup nunca es bueno hablando del registro por lo que guardaremos una copia de las mismas con ayuda del código que publiqué recientemente aquí : RegCopyKey
 
El siguiente código realiza la rarea para claves individuales:

delphi
  1. function RegHideRunAs(SubKey: String): integer;
  2. var
  3. SrcKey, TrgKey: HKEY;
  4. begin
  5. Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell\runas') , 0, KEY_READ, SrcKey);
  6. if Result = ERROR_SUCCESS then
  7. begin
  8. Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey), 0, KEY_READ, TrgKey);
  9. if Result = ERROR_SUCCESS then
  10. begin
  11. Result:= RegCopyKey(SrcKey, TrgKey, 'BkRunAs');
  12. RegCloseKey(SrcKey);
  13. end;
  14. RegCloseKey(TrgKey);
  15. end;
  16. if Result = ERROR_SUCCESS then
  17. RegDeleteTreeA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell\runas'));
  18. end;
  19.  
  20. function RegRestoreRunAs(SubKey: String): integer;
  21. var
  22. SrcKey, TrgKey: HKEY;
  23. begin
  24. Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\BkRunAs'), 0, KEY_READ, SrcKey);
  25. if Result = ERROR_SUCCESS then
  26. begin
  27. Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell'), 0, KEY_READ, TrgKey);
  28. if Result = ERROR_SUCCESS then
  29. begin
  30. Result:= RegCopyKey(SrcKey, TrgKey, 'runas');
  31. RegCloseKey(SrcKey);
  32. end;
  33. RegCloseKey(TrgKey);
  34. end;
  35. if Result = ERROR_SUCCESS then
  36. RegDeleteTreeA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\BkRunAs'));
  37. end;

Y la siguiente función realiza la tarea conjunta:

delphi
  1. function ShowRunAs(Visible: boolean): integer;
  2. begin
  3. {
  4. HKEY_CLASSES_ROOT\batfile\shell\runas
  5. HKEY_CLASSES_ROOT\cmdfile\shell\runas
  6. HKEY_CLASSES_ROOT\cpfile\shell\runas
  7. HKEY_CLASSES_ROOT\exefile\shell\runas
  8. HKEY_CLASSES_ROOT\mscfile\shell\runas
  9. }
  10. if Visible then
  11. begin
  12. RegRestoreRunAs('batfile');
  13. RegRestoreRunAs('cmdfile');
  14. RegRestoreRunAs('cpfile');
  15. RegRestoreRunAs('exefile');
  16. RegRestoreRunAs('mscfile');
  17. end
  18. else
  19. begin
  20. RegHideRunAs('batfile');
  21. RegHideRunAs('cmdfile');
  22. RegHideRunAs('cpfile');
  23. RegHideRunAs('exefile');
  24. RegHideRunAs('mscfile');
  25. end;
  26. end;

Pues ya tenemos la herramienta para esconder y restaurar la opción "Ejecutar como Administrador" del menú del botón derecho del ratón.
 
 
Saludos.

PD/ Edito para unificar en AnsiChar
  • 5

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 13 April 2018 - 04:47 PM

Bestial!


  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14460 posts
  • LocationMéxico

Posted 15 April 2018 - 11:11 PM

Muy bueno :)

 

Saludos


  • 0

#4 Dante

Dante

    Advanced Member

  • Miembros
  • PipPipPip
  • 89 posts

Posted 28 April 2018 - 10:33 PM

Hola me e encontrado con un problema, no me copia los valores de las claves, tengo DELPHI 10 y tuve q hacerle unas modificaciones a la funcione RegCopyKey ya q me generaba este errror [dcc32 Error] Unit2.pas(64): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'

para resolver esto tuve q cambiar RegCreateKeyEx por RegCreateKeyExA , RegEnumValue por RegEnumValueA, RegSetValueEx por RegSetValueExA y RegOpenKeyEx por RegOpenKeyExA.

 

Estos cambios pudieran ser el motivo por el cual no me copia los valores?


  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 29 April 2018 - 02:13 AM

Hola me e encontrado con un problema, no me copia los valores de las claves, tengo DELPHI 10 y tuve q hacerle unas modificaciones a la funcione RegCopyKey ya q me generaba este errror [dcc32 Error] Unit2.pas(64): E2010 Incompatible types: 'PWideChar' and 'PAnsiChar'
para resolver esto tuve q cambiar RegCreateKeyEx por RegCreateKeyExA , RegEnumValue por RegEnumValueA, RegSetValueEx por RegSetValueExA y RegOpenKeyEx por RegOpenKeyExA.
 
Estos cambios pudieran ser el motivo por el cual no me copia los valores?

Efectivamente es problema del unicode. O usas las API acabadas en A (ansi) o usas PCHAR (PWCHAR) en este caso, decir la incongruencia sintáctica de PCHAR: en compiladores No unicode PCHAR es tamaño BYTE. En los compiladores con Unicode PCHAR es asumido cono un PWCHAR tamaño 2 BYTES y para referirte al tamaño 1 byte debes usar PANSICHAR.

Saludos.
  • 1




IP.Board spam blocked by CleanTalk.