根据用户名称判断是否允许Wincc退出运行系统
1、打开Wincc---用户管理器。
2、在打开的用户管理器中,设置两个用户,本文以Administrator和land两个用户为例进行说明。两个用户的权限区别在于:Administrator用户比land用户多了一个编号的权限(任何编号都可以,比land用户至少多一个权限即可),本文以编号17为例,设置的目的是用于后文中的C脚本编写命令。
PS:经测试Wincc软件的用户名及密码没有大小写区分。
3、打开wincc---全局脚本---C-Editor---动作---全局动作,选中全局动作,点击右键---新建。
4、在新出现的空白处,把下面的代码粘贴进去
************从下面开始复制***************
#include "apdefap.h"
int gscAction( void )
{
{
#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(17, 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);
}
return 0;
}
************到上面一行结束***************
编译并保存后退出。
5、设置完成之后即可通过用户Administrator和land的登陆实现Windows热键的屏蔽。
本例中,创建用户特定的授权编号为 19 来使能 Windows 组合键。还可以使用其他的或者已经存在的权限(例如:“Higher process controlling”,编号 6)。
6、为了在用户登录/注销时能够使能/禁止组合键(激活上述代码),需要在全局动作中使用到触发器,即系统内部变量“@Current_User” 作为触发器变量。触发器的周期可以自行设定,触发器选项在空白处右键可以看到。
7、PS:组合键“Alt + F4”可以在 WinCC Explorer 中的计算机“属性”的对话框中禁止。打开“WinCC Explorer > 计算机 > 计算机属性 > 图形运行系统”并选择相应的复选框来设置。禁用了该功能之后,就必须要牢记用户名的密码了,否则的话,就只有强制关机才能退出系统了。