⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rett.pas

📁 感染下载者源码 感染下载者源码 感染下载者源码
💻 PAS
字号:
unit rett;


    interface

    uses Windows;

    function RegSetString(RootKey: HKEY; Name: String; Value: String): boolean;
    function RegGetString(RootKey: HKEY; Name: String; Var Value: String): boolean;
    function RegSetInteger(RootKey: HKEY; Name: String;Value: Integer): boolean;
    implementation

    function LastPos(Needle: Char; Haystack: String): integer; 
    begin 
     for Result := Length(Haystack) downto 1 do 
     if Haystack[Result] = Needle then 
     Break;
    end;

    function RegSetValue(RootKey: HKEY; Name: String; ValType: Cardinal; PVal: Pointer; ValSize: Cardinal): boolean;
    var
     SubKey: String;
     n: integer;
     dispo: DWORD;
     hTemp: HKEY;
    begin
     Result := False;
     n := LastPos('\', Name);
     if n > 0 then
     begin
     SubKey := Copy(Name, 1, n - 1);
     if RegCreateKeyEx(RootKey, PChar(SubKey), 0, nil, REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, hTemp, @dispo) = ERROR_SUCCESS then
     begin
     SubKey := Copy(Name, n + 1, Length(Name) - n);
     if SubKey = '' then
     Result := (RegSetValueEx(hTemp, nil, 0, ValType, PVal, ValSize) = ERROR_SUCCESS)
     else
     Result := (RegSetValueEx(hTemp, PChar(SubKey), 0, ValType, PVal, ValSize) = ERROR_SUCCESS);
     RegCloseKey(hTemp);
     end;
     end;
    end;

    function RegGetValue(RootKey: HKEY; Name: String; ValType: Cardinal; var PVal: Pointer; var ValSize: Cardinal): boolean;
    var
     SubKey: String;
     n: integer;
     MyValType: DWORD;
     hTemp: HKEY;
     Buf: Pointer; 
     BufSize: Cardinal; 
     PKey: PChar; 
    begin 
     Result := False; 
     n := LastPos('\', Name); 
     if n > 0 then 
     begin 
     SubKey := Copy(Name, 1, n - 1); 
     if RegOpenKeyEx(RootKey, PChar(SubKey), 0, KEY_READ, hTemp) = ERROR_SUCCESS then 
     begin 
     SubKey := Copy(Name, n + 1, Length(Name) - n); 
     if SubKey = '' then 
     PKey := nil 
     else 
     PKey := PChar(SubKey); 
     if RegQueryValueEx(hTemp, PKey, nil, @MyValType, nil, @BufSize) = ERROR_SUCCESS then 
     begin 
     GetMem(Buf, BufSize); 
     if RegQueryValueEx(hTemp, PKey, nil, @MyValType, Buf, @BufSize) = ERROR_SUCCESS then 
     begin 
     if ValType = MyValType then 
     begin 
     PVal := Buf; 
     ValSize := BufSize; 
     Result := True; 
     end else 
     begin 
     FreeMem(Buf); 
     end; 
     end else 
     begin 
     FreeMem(Buf); 
     end; 
     end; 
     RegCloseKey(hTemp); 
     end; 
     end; 
    end;

     function RegSetValue2(RootKey: HKEY; Name: String; ValType: Cardinal; PVal: Pointer; ValSize: Cardinal): boolean;
    var
     SubKey: String;
     n: integer;
     dispo: DWORD;
     hTemp: HKEY;
    begin
     Result := False;
     n := LastPos('\', Name);
     if n > 0 then
     begin
     SubKey := Copy(Name, 1, n - 1);
     if RegCreateKeyEx(RootKey, PChar(SubKey), 0, nil, REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, hTemp, @dispo) = ERROR_SUCCESS then
     begin
     SubKey := Copy(Name, n + 1, Length(Name) - n);
     if SubKey = '' then
     Result := (RegSetValueEx(hTemp, nil, 0, ValType, PVal, ValSize) = ERROR_SUCCESS)
     else
     Result := (RegSetValueEx(hTemp, PChar(SubKey), 0, ValType, PVal, ValSize) = ERROR_SUCCESS);
     RegCloseKey(hTemp);
     end;
     end;
    end;

    function RegSetString(RootKey: HKEY; Name: String; Value: String): boolean;
    begin
     Result := RegSetValue(RootKey, Name, REG_SZ, PChar(Value + #0), Length(Value) + 1);
    end;
    function RegSetinteger(RootKey: HKEY; Name: String; Value: Integer): boolean;
    begin
     Result := RegSetValue2(RootKey, Name, REG_DWORD, @value, sizeof(Integer));
    end;
    function RegGetString(RootKey: HKEY; Name: String; Var Value: String): boolean;
    var
     Buf: Pointer;
     BufSize: Cardinal;
    begin
     Result := False;
     Value := '';
     if RegGetValue(RootKey, Name, REG_SZ, Buf, BufSize) then
     begin
     Dec(BufSize);
     SetLength(Value, BufSize);
     if BufSize > 0 then
     Move(Buf^, Value[1], BufSize);
     FreeMem(Buf);
     Result := True;
     end;
    end;
    end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -