[an error occurred while processing this directive]

HP OpenVMS Systems

ask the wizard
Content starts here

Identifiers and Security System Services?

» close window

The Question is:

 
Hi Wiz,
 
from installed program (no subsystem ACEs) I want to check if the current
 process holds specific identifier.
 
When calling $CHECK_PRIVILEGEW (flags= NSA$M_IDENTIFIER) I'm always getting
 SS$_NOAUDIT error, unless, of course the process has AUDIT privilege or the
 program is installed with it.
 
As this both is unfortunately unacceptable, is there another way to achieve
 this, besides looping with $FIND_HELD?
 
Have I overlooked something?
 
TIA.
 
Regards,
 
          J.M


The Answer is :

 
  The usual solution is to try the target operation.
 
  If you wish to synthesize your own check, use $chkpro or
  $check_access.
 
  If the identifier is known in advance, one simple mechanism is to
  protect a file using that identifier and attempt to open it.  The
  success or failure will tell you if the process holds the identifier.
  (This is an implementation of a $chkpro call, of course, using an
  actual file object.)   Note that if the intended result of the test
  is to exit if the identifier is not held, you could protect the
  image iteself and avoid the test altogether.
 
  sys$getjpi[w] can also return rights information. See item codes
  JPI$_RIGHTSLIST, JPI$_RIGHTS_SIZE, JPI$_PROCESS_RIGHTS and
  JPI$_SYSTEM_RIGHTS. Since sys$getjpi[w] returns information
  in binary form, you will probably also need to call sys$asctoid
  or sys$idtoasc.
 

answer written or last revised on ( 28-JUN-2004 )

» close window