本文整理自网络,侵删。
下面的代码片段可以作为应用程序是否需要(并且适当地授予)管理员权限的快速测试。申报你的申请所需的提升级别,并执行以下程序:
管理员级别(标准用户下):
1、asInvoker:应用程序作为标准用户启动
2、highestAvailable:应用程序作为标准用户启动
3、requireAdministrator:在运行应用程序之前提示管理员权限
uses
System.Win.Registry, Winapi.Windows;
procedure isAdmin();
var
reg: TRegistry;
openResult: Boolean;
begin
reg := TRegistry.Create(KEY_READ);
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.Access := KEY_WRITE;
openResult := reg.OpenKey('Software\MyCompanyName\MyApplication\',True);
if not openResult = True then
begin
MessageDlg('无法写入注册表。您的应用程序没有管理员级权限。',
TMsgDlgType.mtError, mbOKCancel, 0);
end
else
begin
MessageDlg('允许写入注册表。您的应用程序具有管理员级权限。',
TMsgDlgType.mtInformation, mbOKCancel, 0);
end;
reg.CloseKey();
reg.Free;
end;
此测试之所以有效,是因为您需要管理员级权限才能写入注册表的HKEY_LOCAL_MACHINE\Software部分。代码段实际上不向注册表写入任何东西,它只请求写入权限。
确保您构建应用程序后,在IDE之外执行它,因为IDE默认情况下会用管理员级别的权限调试应用程序(不尊重应用程序清单)。
相关阅读 >>
Delphi webbrowser ie 窗口选择中,选中的文字内容
Delphi 2009 之 tstringbuilder 类[7]: tostring
更多相关阅读请进入《Delphi》频道 >>