wincc7.3项目运行中修改当前用户密码,输入旧密码,输入新密码,确认按钮。用脚本怎么实现?从网上找的看起来挺复杂。也没试成功
问题补充:
客户要求可以更改密码,我见其他的软件也可以改,触摸屏也能改,怎么会不安全呢?能给个修改密码的具体实例吗?
最佳答案
可以的,我正在做的一个项目已经做好了。有几种方法:1、用ODK做 2、用数据库做在PW_USER表中,用DBConnect链接,DBOpen打开表,然后DBNewRecord和DBSetFieldData和DBUpdateRecord即可。
用ODK做也可以
#pragma code ("UseGen.DLL")
#include "usegenap.h"
#pragma code ()
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
#include "apdefap.h"
#pragma option(mbcs)
BOOL GENchangepwd(char*oldpwd,char*newpwd,char*copwd,BOOL prompt)
{
CMN_ERROR err;
BOOL bRet;
char username[255];
extern char gc_CURDSN[1];
extern HWND gh_HWND;
printf(">-------------------------------------GENchangepwd(start)-------------------------------------------------------\r\n");
bRet=PWRTGetCurrentUser (username,255);
if(bRet)
printf("当前登录用户:%s\r\n",username);
else
{
printf("当前没有用户登录,不能执行密码修改功能。\r\n");
if(prompt)
{
MessageBox(gh_HWND,"当前没有用户登录,不能执行密码修改功能。","修改密码",MB_ICONINFORMATION|MB_OK);
}
return FALSE;
}
if(!strcmp(newpwd,copwd)==0)
{
printf("输入的新密码与确认密码不一致,请重新输入。\r\n");
if(prompt)
{
MessageBox(gh_HWND,"输入的新密码与确认密码不一致,请重新输入。","修改密码",MB_ICONINFORMATION|MB_OK);
}
return FALSE;
}
if(PWGENConnect(gc_CURDSN,&err))
{
bRet=PWGENCheckUser(username,oldpwd,&err);
if (!bRet)
{
if(err.dwError1==PWGEN_API_NO_PASSWORD)
{
printf("输入的旧密码错误。\r\n");
if(prompt)
{
MessageBox(gh_HWND,"输入的旧密码错误。","修改密码",MB_ICONINFORMATION|MB_OK);
}
}
else
{
GENerror(&err,"PWGENCheckUser",NULL);
if(prompt)
{
MessageBox(gh_HWND,"检查原用户名和密码不正确。","修改密码",MB_ICONINFORMATION|MB_OK);
}
}
printf("密码未被更改。\r\n");
goto lend;
}
bRet=PWGENChangePassword (username,oldpwd,newpwd,&err);
if (bRet)
{
printf("当前登录用户的密码已成功更改。\r\n");
if(prompt)
{
MessageBox(gh_HWND,"当前登录用户的密码已成功更改。","修改密码",MB_ICONINFORMATION|MB_OK);
}
ALGSendMsg(9002,0,0,0,username,"GENchangepwd");
}
else
{
if(err.dwError1==PWGEN_API_NO_PASSWORD)
{
printf("输入的新密码错误,长度至少6位。\r\n");
if(prompt)
{
MessageBox(gh_HWND,"输入的新密码错误,长度至少6位。","修改密码",MB_ICONINFORMATION|MB_OK);
}
}
else
{
GENerror(&err,"PWGENChangePassword",NULL);
if(prompt)
{
MessageBox(gh_HWND,"输入的用户名和新密码不正确。","修改密码",MB_ICONINFORMATION|MB_OK);
}
}
printf("密码未被更改。\r\n");
}
}
else
{
GENerror(&err,"PWGENConnect",NULL);
printf("密码未被更改。\r\n");
}
lend:
PWGENDisconnect(&err);
printf("<-------------------------------------GENchangepwd(end)-------------------------------------------------------\r\n");
return bRet;
}
提问者对于答案的评价:
从网上找的例子经过仔细试验成功了,你给的例子我没看懂,不过分还是给你了
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc165265.html