技术论坛

 WINCC根据用户权限决定是否能够使用U盘

返回主题列表
作者 主题
柳叶飘飘
侠圣

经验值:2634
发帖数:95
精华帖:7
楼主    2017-01-09 21:54:35
主题: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存储器的启用权限。

 

以上程序均已完美运行



努力赚钱 养家糊口
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。