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