HKEY_CLASSES_ROOT\batfile\shell\runas HKEY_CLASSES_ROOT\cmdfile\shell\runas HKEY_CLASSES_ROOT\cpfile\shell\runas HKEY_CLASSES_ROOT\exefile\shell\runas 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:
function RegHideRunAs(SubKey: String): integer; var SrcKey, TrgKey: HKEY; begin Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell\runas') , 0, KEY_READ, SrcKey); if Result = ERROR_SUCCESS then begin Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey), 0, KEY_READ, TrgKey); if Result = ERROR_SUCCESS then begin Result:= RegCopyKey(SrcKey, TrgKey, 'BkRunAs'); RegCloseKey(SrcKey); end; RegCloseKey(TrgKey); end; if Result = ERROR_SUCCESS then RegDeleteTreeA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell\runas')); end; function RegRestoreRunAs(SubKey: String): integer; var SrcKey, TrgKey: HKEY; begin Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\BkRunAs'), 0, KEY_READ, SrcKey); if Result = ERROR_SUCCESS then begin Result:= RegOpenKeyExA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\shell'), 0, KEY_READ, TrgKey); if Result = ERROR_SUCCESS then begin Result:= RegCopyKey(SrcKey, TrgKey, 'runas'); RegCloseKey(SrcKey); end; RegCloseKey(TrgKey); end; if Result = ERROR_SUCCESS then RegDeleteTreeA(HKEY_CLASSES_ROOT, PAnsiChar(SubKey + '\BkRunAs')); end;
Y la siguiente función realiza la tarea conjunta:
function ShowRunAs(Visible: boolean): integer; begin { HKEY_CLASSES_ROOT\batfile\shell\runas HKEY_CLASSES_ROOT\cmdfile\shell\runas HKEY_CLASSES_ROOT\cpfile\shell\runas HKEY_CLASSES_ROOT\exefile\shell\runas HKEY_CLASSES_ROOT\mscfile\shell\runas } if Visible then begin RegRestoreRunAs('batfile'); RegRestoreRunAs('cmdfile'); RegRestoreRunAs('cpfile'); RegRestoreRunAs('exefile'); RegRestoreRunAs('mscfile'); end else begin RegHideRunAs('batfile'); RegHideRunAs('cmdfile'); RegHideRunAs('cpfile'); RegHideRunAs('exefile'); RegHideRunAs('mscfile'); end; 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