DELPHI写的程序生成“快捷方式”的问题
我用DELPHI2010写了一只程式,打开执行都没有问题,但是生成的桌面快捷方式却有问题,一打开就卡;(1)程式本省执行没有问题(2)生成的快捷方式如果放在和程式执行档同...
我用DELPHI2010写了一只程式,打开执行都没有问题,但是生成的桌面快捷方式却有问题,一打开就卡;(1)程式本省执行没有问题(2)生成的快捷方式如果放在和程式执行档同一路径上打开也没有问题(3)检查桌面快捷方式路径没有问题,是正确的。(4)直接打开桌面快捷方式就卡(5)桌面快捷方式如果用管理员权限打开也没问题可以正常执行。 问:怎么修改程序,让桌面快捷方式不用管理员权限也能正常执行?万分感谢!!!
展开
1个回答
展开全部
提升权限可以让本程序更好的运行,管理员模式也是为了提升权限,如果程序受到权限限制会好多dll不能调用,
delphi 编程内本身可以提升自身权限
/提升进程权限为DEBUG权限
procedure SetPrivilege;
var
OldTokenPrivileges, TokenPrivileges: TTokenPrivileges;
ReturnLength: dword;
hToken: THandle;
Luid: int64;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, 'SeDebugPrivilege', Luid);
TokenPrivileges.Privileges[0].luid := Luid;
TokenPrivileges.PrivilegeCount := 1;
TokenPrivileges.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TokenPrivileges, SizeOf(TTokenPrivileges), OldTokenPrivileges, ReturnLength);
OldTokenPrivileges.Privileges[0].luid := Luid;
OldTokenPrivileges.PrivilegeCount := 1;
OldTokenPrivileges.Privileges[0].Attributes := TokenPrivileges.Privileges[0].Attributes or SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, OldTokenPrivileges, ReturnLength, PTokenPrivileges(nil)^, ReturnLength);
end;
用法就不用说了吧,
procedure TForm1.FormCreate(Sender: TObject);
begin SetPrivilege; ...
一句话就把程序提升为DEBUG权限了,然后就可以随便结束其他进程了.
希望可以帮到你
delphi 编程内本身可以提升自身权限
/提升进程权限为DEBUG权限
procedure SetPrivilege;
var
OldTokenPrivileges, TokenPrivileges: TTokenPrivileges;
ReturnLength: dword;
hToken: THandle;
Luid: int64;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, 'SeDebugPrivilege', Luid);
TokenPrivileges.Privileges[0].luid := Luid;
TokenPrivileges.PrivilegeCount := 1;
TokenPrivileges.Privileges[0].Attributes := 0;
AdjustTokenPrivileges(hToken, False, TokenPrivileges, SizeOf(TTokenPrivileges), OldTokenPrivileges, ReturnLength);
OldTokenPrivileges.Privileges[0].luid := Luid;
OldTokenPrivileges.PrivilegeCount := 1;
OldTokenPrivileges.Privileges[0].Attributes := TokenPrivileges.Privileges[0].Attributes or SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, False, OldTokenPrivileges, ReturnLength, PTokenPrivileges(nil)^, ReturnLength);
end;
用法就不用说了吧,
procedure TForm1.FormCreate(Sender: TObject);
begin SetPrivilege; ...
一句话就把程序提升为DEBUG权限了,然后就可以随便结束其他进程了.
希望可以帮到你
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询