在WINCC中用C语言写了一段代码以一分钟周期运行之后,点击开始中的关机...出现对话框后再点击关机 重启 注销都没有反应.关闭了这段代码的运行,问题依旧出现.
代码如下
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code()
#pragma code ("ALMXGINA.DLL")
BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize);
#pragma code()
BOOL bEnable;
BOOL bOK;
#define XGINA_ALLOW_SHUTDOWN 1
#define XGINA_ALLOW_LOGOUT 2
#define XGINA_ALLOW_CTL_ALT_DEL 3
#define XGINA_ALLOW_CTL_ESC 4
#define XGINA_ALLOW_ALT_ESC 5
#define XGINA_ALLOW_ALT_TAB 6
bEnable = PWRTCheckPermission(19, TRUE);
bOK = SetXGinaValue(XGINA_ALLOW_SHUTDOWN , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_LOGOUT , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ALT_DEL , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_TAB , &bEnable , sizeof(bEnable ));
printf("#I101: SetXGinaValue() - bEnable=%d bOK=%d (lock/unlock windows keys)\r\n", bEnable, bOK);
请教高手是何原因引起,如何补救.
最佳答案
可能是由于脚本中将XGINA_ALLOW_SHUTDOWN、XGINA_ALLOW_LOGOUT 、XGINA_ALLOW_CTL_ALT_DEL 等锁住后,造成无法正常关机、注销等系统操作。
此代码可以改为根据@CurrentUser变化而执行,当有权限的用户登陆后 bEnable=TRUE;将热键解锁。或者在退出WinCC按钮处调用一次进行解锁。
提问者对于答案的评价:
感谢dcount107 的解答,问题已得到解决
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc275534.html