Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi OpenProcessToken + Access Denied (https://www.delphipraxis.net/20437-openprocesstoken-access-denied.html)

toms 17. Apr 2004 22:10


OpenProcessToken + Access Denied
 
Hi,

Ich rufe
OpenProcessToken(ProcessHandle, TOKEN_QUERY, hToken)
für alle laufenden Prozesse.

Bei einigen Prozessen (z.B System Prozess) gibt's jedoch ein "Access Denied"

Laut msdn muss man "SACL Access Right" anpassen.

http://msdn.microsoft.com/library/de...cess_right.asp

Weiss jemand wie das geht?

NicoDE 17. Apr 2004 22:20

Re: OpenProcessToken + Access Denied
 
Such im Forum nach EnablePrivilege.
Die Konstanten sehen wie folgt aus:
Delphi-Quellcode:
{ WinNT.h, line 5004 }

////////////////////////////////////////////////////////////////////////
//                                                                    //
//               NT Defined Privileges                               //
//                                                                    //
////////////////////////////////////////////////////////////////////////

const
  SE_CREATE_TOKEN_NAME             = 'SeCreateTokenPrivilege';
  SE_ASSIGNPRIMARYTOKEN_NAME       = 'SeAssignPrimaryTokenPrivilege';
  SE_LOCK_MEMORY_NAME              = 'SeLockMemoryPrivilege';
  SE_INCREASE_QUOTA_NAME           = 'SeIncreaseQuotaPrivilege';
  SE_UNSOLICITED_INPUT_NAME        = 'SeUnsolicitedInputPrivilege';
  SE_MACHINE_ACCOUNT_NAME          = 'SeMachineAccountPrivilege';
  SE_TCB_NAME                      = 'SeTcbPrivilege';
  SE_SECURITY_NAME                 = 'SeSecurityPrivilege';
  SE_TAKE_OWNERSHIP_NAME           = 'SeTakeOwnershipPrivilege';
  SE_LOAD_DRIVER_NAME              = 'SeLoadDriverPrivilege';
  SE_SYSTEM_PROFILE_NAME           = 'SeSystemProfilePrivilege';
  SE_SYSTEMTIME_NAME               = 'SeSystemtimePrivilege';
  SE_PROF_SINGLE_PROCESS_NAME      = 'SeProfileSingleProcessPrivilege';
  SE_INC_BASE_PRIORITY_NAME        = 'SeIncreaseBasePriorityPrivilege';
  SE_CREATE_PAGEFILE_NAME          = 'SeCreatePagefilePrivilege';
  SE_CREATE_PERMANENT_NAME         = 'SeCreatePermanentPrivilege';
  SE_BACKUP_NAME                   = 'SeBackupPrivilege';
  SE_RESTORE_NAME                  = 'SeRestorePrivilege';
  SE_SHUTDOWN_NAME                 = 'SeShutdownPrivilege';
  SE_DEBUG_NAME                    = 'SeDebugPrivilege';
  SE_AUDIT_NAME                    = 'SeAuditPrivilege';
  SE_SYSTEM_ENVIRONMENT_NAME       = 'SeSystemEnvironmentPrivilege';
  SE_CHANGE_NOTIFY_NAME            = 'SeChangeNotifyPrivilege';
  SE_REMOTE_SHUTDOWN_NAME          = 'SeRemoteShutdownPrivilege';
  SE_UNDOCK_NAME                   = 'SeUndockPrivilege';
  SE_SYNC_AGENT_NAME               = 'SeSyncAgentPrivilege';
  SE_ENABLE_DELEGATION_NAME        = 'SeEnableDelegationPrivilege';
  SE_MANAGE_VOLUME_NAME            = 'SeManageVolumePrivilege';
  SE_IMPERSONATE_NAME              = 'SeImpersonatePrivilege';
  SE_CREATE_GLOBAL_NAME            = 'SeCreateGlobalPrivilege';

toms 17. Apr 2004 22:25

Re: OpenProcessToken + Access Denied
 
Zitat:

Such im Forum nach EnablePrivilege.
Hatte bereits mit AdjustTokenPrivileges gespielt aber leider ohne Erfolg.
Habe das SeSecurityPrivilege aktiviert.

NicoDE 17. Apr 2004 22:28

Re: OpenProcessToken + Access Denied
 
Was genau willst Du denn machen?
Einige System-Prozesse wirst Du nicht im herkömmlichen Sinne öffnen können.

toms 17. Apr 2004 22:33

Re: OpenProcessToken + Access Denied
 
Möchte mit LookupAccountSid() den Benutzernamen eines Prozesses ermitteln.

OpenProcess(PROCESS_QUERY_INFORMATION,...) -->
OpenProcessToken(...,TOKEN_QUERY,...) -->
GetTokenInformation -->
LookupAccountSid

NicoDE 17. Apr 2004 22:40

Re: OpenProcessToken + Access Denied
 
Wenn ich mich recht erinnere (bin gerade nicht unter Windows), dann geht das beim "System"-Prozess nicht...

toms 17. Apr 2004 22:42

Re: OpenProcessToken + Access Denied
 
Dann ist der Benutzername wahrscheinlich einfach "SYSTEM", so wie er im Task-Manager angezeigt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz