Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1065136
  • 博文数量: 106
  • 博客积分: 9093
  • 博客等级: 中将
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 17:22
文章分类

全部博文(106)

文章存档

2014年(1)

2012年(29)

2011年(32)

2010年(20)

2008年(24)

分类: 系统运维

2012-08-24 17:34:09

可以自己写一个自己用户的密码修改命令,CHGUSRPRF和CHGPWD都不适合在程序中使用,CHGUSRPRF需要较高的用户权限,CHGPWD需要交互。 API QSYCHGPW比较适合我们的需求。

不过这个API也是有限制的,当user id为*current是可以使用。当不是*current需要较高的用户权限。

下面是简单的实现代码:
H nomain                                                      
D ChgPWD          pr             1N                           
D   PramOldPWD                  10                            
D   PramNewPWD                  10                            
D*                                                            
p ChgPWD          B                   EXPORT                  
D ChgPWD          pi             1N                           
D   PramOldPWD                  10                            
D   PramNewPWD                  10                            
D*                                                            
D ChgMyPWD        PR                  extpgm('QSYCHGPW')      
D   Usrid                       10                            
D   OldPWD                     256    Options( *VarSize )     
D   NewPWD                     256    Options( *VarSize )     
D   Error                    32767    Options( *VarSize )     
D*                                                            
D Usrid           s             10    Inz('*CURRENT')         
D Rcode           s              1N   Inz('0')                
D Error           ds                  Qualified               
D  BytPrv                       10i 0 Inz( %Size( Error ))   
D  BytAvl                       10i 0                        
D  MsgId                         7a                          
D                                1a                          
D  MsgDta                      128a                          
 /free                                                       
                                                             
   callp ChgMyPWD(Usrid:                                     
                  PramOldPWD:                                
                  PramNewPWD:                                
                  Error);                                    
   if Error.BytAvl = 0;                                      
     Rcode = '0';                                            
   else;                                                     
     Rcode = '1';                                            
   endif;                                                    
                                                             
   return Rcode;                                             
 /end-free                                                   
                      
p ChgPWD          E  

测试程序
D ChgPWD          pr             1N                      
D   PramOldPWD                  10                       
D   PramNewPWD                  10                       
D*                                                       
D Rcode           s              1N                      
D PramOldPWD      s             10    inz('BGT55TGB')    
D PramNewPWD      s             10    INZ('NHY66YHN')    
D*                                                       
 /free                                                   
                                                         
   Rcode =ChgPWD(PramOldPWD:                             
                PramNewPWD);                             
                                                         
   if Rcode = '1';                                       
     dsply 'error';                                      
   else;                                                 
     Dsply 'change pwd successfully';                    
   endif;                                                
   *inlr = *on;                                          
   return;      
 /end-free      
阅读(3260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~