| 作者 | 主题 |
|---|---|
|
柳叶飘飘 侠圣
经验值:2634 发帖数:95 精华帖:7 |
楼主
主题:WINCC根据用户权限决定是否能够使用U盘
该文搬自给我自己的新浪博客 有了该文你会学会如何定义自己的用户权限和如何操作注册表。 思路:要实现不同权限的用户是否具有使用USB存储器的功能,需要达到两点目的:1.如何对USB存储进行启用和禁用。2.如何判断当前用户权限。 实现方式:USB存储进行启用和禁用可以通过注册表进行操作,当前用户权限可以通过WINCC提供的ODT接口获得。 'OnlyReadUsb=1为只读,0为可写 'lockusbport=4为禁用,3为启用 'Dim OnlyReadUsb Dim lockusbport Dim PermissionLevel Dim CurrentUser Set PermissionLevel=HMIRuntime.Tags("PermissionLevel") Set CurrentUser = HMIRuntime.Tags("@CurrentUser") 'OnlyReadUsb=CreateObject("Ws cript.Shell").RegWrite("HKLMSYSTEMCurrentControlSetControlStorageDevicePoliciesWriteProtect",0,"REG_DWORD") 'lockusbport=createobject("Ws cript.shell").RegWrite ("HKCRSYSTEMCurrentControlSetServicesUSBSTOR",Default) If PermissionLevel.Read=1 Then If CurrentUser.Read="" Then lockusbport=CreateObject("Ws cript.shell").RegWrite ("HKLMSYSTEMCurrentControlSetServicesUSBSTORstart",4,"REG_DWORD") MsgBox"USB设备已禁用,重新插入USB存储器后失效" Else lockusbport=CreateObject("Ws cript.shell").RegWrite ("HKLMSYSTEMCurrentControlSetServicesUSBSTORstart",3,"REG_DWORD") MsgBox"USB设备已启用,请重新插入USB存储器生效" End If Else lockusbport=CreateObject("Ws cript.shell").RegWrite ("HKLMSYSTEMCurrentControlSetServicesUSBSTORstart",4,"REG_DWORD") MsgBox"USB设备已禁用,重新插入USB存储器后失效" End If 简要说明:PermissionLevel变量为自己建做确定是否具有启用USB存储的权限变量。该脚本通过用户名变量的改变执行。 以下为C脚本通过WINCC的 ODT接口资料编写以下C全局脚本 #include "apdefap.h" int gscAction( void ) { #pragma option(mbcs) #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() SetTagFloat("PermissionLevel", PWRTCheckPermission(18,TRUE)); return 0; } 通过PWRTCheckPermission函数判断编号为18的权限在当前用户下是否具有。权限在用户管理器中进行设置,编号自定义。
通过以上的两个脚本可以实现具有某种特性权限的用户实现对USB存储器的启用权限。
以上程序均已完美运行
努力赚钱 养家糊口
|