Api : QSYGETPH QWTSETP QSYRLSPH élévation de profil
Posté : mer. 05 mars 2014, 11:49:16
Bonjour,
Devant utiliser les droits d'un utilisateur lors d'un traitement lancé par un autre utilisateur, j'utilise ces trois APIs.
Mon but étant de pouvoir utiliser deux commandes dans des CL. La première (Commande1) pour changer le profil d'exécution et la seconde (Commande2) revenir au profil d'origine.
Commande1 fait :
QSYGETPH --> pour le profil A en cours avec handle1 (Profile handle 12)
QSYGETPH --> pour le profil B avec droit avec handle2 (Profile handle 12)
QWTSETP --> handle2
Commande2 fait :
QWTSETP --> handle1
QSYRLSPH --> handle1
QSYRLSPH --> handle2
CL fait
L'élévation du profil fonctionne et mon traitement se fait bien.
Par contre la remise du profil d'origine ne marche pas, je reste sous profil élevé.
Après recherche, je trouve des exemples. Mais les trois apis sont toujours dans le même programme.
J'ai fait le test suivant :
Je change bien de profil, le traitement s'exécute et je reviens bien au profil d'origine.
Je me pose la question suivante : Est-il possible de séparer l'élévation du profil et le retour au profil d'origine en utilisant des programmes séparés ?
Pouvez-vous m'aider sur ce problème?
Je vous en remercie d'avance.
Devant utiliser les droits d'un utilisateur lors d'un traitement lancé par un autre utilisateur, j'utilise ces trois APIs.
Mon but étant de pouvoir utiliser deux commandes dans des CL. La première (Commande1) pour changer le profil d'exécution et la seconde (Commande2) revenir au profil d'origine.
Commande1 fait :
QSYGETPH --> pour le profil A en cours avec handle1 (Profile handle 12)
QSYGETPH --> pour le profil B avec droit avec handle2 (Profile handle 12)
QWTSETP --> handle2
Commande2 fait :
QWTSETP --> handle1
QSYRLSPH --> handle1
QSYRLSPH --> handle2
CL fait
Code : Tout sélectionner
Call CL parm(B) ---> profil d'élévation
Commande1 B handle1 handle2
Traitement ...
Commande2 handle1 handle2
Par contre la remise du profil d'origine ne marche pas, je reste sous profil élevé.
Après recherche, je trouve des exemples. Mais les trois apis sont toujours dans le même programme.
J'ai fait le test suivant :
Code : Tout sélectionner
PGM PARM(&SUUSER)
DCL VAR(&SUUSER) TYPE(*CHAR) LEN(10)
DCL VAR(&HCURUSER) TYPE(*CHAR) LEN(12)
DCL VAR(&HSUUSER) TYPE(*CHAR) LEN(12)
CALL PGM(QSYS/QSYGETPH) PARM('*CURRENT' +
'*NOPWDCHK' &HCURUSER)
CALL PGM(QSYS/QSYGETPH) PARM(&SUUSER '*NOPWDCHK' +
&HSUUSER)
DSPJOB OPTION(*STSA)
CALL PGM(QSYS/QWTSETP) PARM(&HSUUSER)
DSPJOB OPTION(*STSA)
CALL PGM(STRSUGBT)
CALL PGM(QSYS/QWTSETP) PARM(&HCURUSER)
DSPJOB OPTION(*STSA)
CALL PGM(QSYS/QSYRLSPH) PARM(&HCURUSER)
CALL PGM(QSYS/QSYRLSPH) PARM(&HSUUSER)
DSPJOB OPTION(*STSA)
ENDPGM
Je me pose la question suivante : Est-il possible de séparer l'élévation du profil et le retour au profil d'origine en utilisant des programmes séparés ?
Pouvez-vous m'aider sur ce problème?
Je vous en remercie d'avance.