想知道我的应用程序是否具有管理员权限?

时间:2010-07-21 14:35:29

标签: delphi

代表delphi 我想知道我的应用程序是否具有管理员权限,您可能知道有解决方案吗?

相关问题:

How to launch an application with admin rights?

3 个答案:

答案 0 :(得分:9)

只是尝试做一些需要管理权限的事情:

uses
  WinSvc;

function IsAdmin(Host : string = '') : Boolean;
var
  H: SC_HANDLE;
begin
  if Win32Platform <> VER_PLATFORM_WIN32_NT then
    Result := True
  else begin
    H := OpenSCManager(PChar(Host), nil, SC_MANAGER_ALL_ACCESS);
    Result := H <> 0;
    if Result then
      CloseServiceHandle(H);
  end;
end;

答案 1 :(得分:4)

您通过GetTokenInformation调用WinAPI函数TokenElevationa C++ example here应该很容易转换。

请注意,作为管理员并被提升是不同的。

答案 2 :(得分:-2)

至于知道你的程序是否具有管理员权限,我没有代码,但这可能是一个想法。请注意,我刚刚编写它并且未经测试。

但我们的想法是,如果您能够在program files文件夹中创建文件,那么您可能拥有管理员权限。

function IsRunningWithAdminPrivs: Boolean;
begin
var
  List: TStringList;
begin
  List := TStringList.Create;
  try
    try
      List.Text := 'Sample';
      // Use SHGetFolder path to retreive the program files folder
      // here is hardcoded for the sake of the example
      List.SaveToFile('C:\program files\test.txt');
      Result := True;
    except
      Result := False;
    end;
  finally
    List.Free;
    DeleteFile('C:\program files\test.txt');
  end;
end;