该文搬自给我自己的新浪博客
有了该文你会学会如何定义自己的用户权限和如何操作注册表。
思路:要实现不同权限的用户是否具有使用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("WScript.Shell").RegWrite("HKLMSYSTEMCurrentControlSetControlStorageDevicePoliciesWriteProtect",0,"REG_DWORD")
'lockusbport=createobject("Wscript.shell").RegWrite ("HKCRSYSTEMCurrentControlSetServicesUSBSTOR",Default)
If PermissionLevel.Read=1 Then
If CurrentUser.Read="" Then
lockusbport=CreateObject("Wscript.shell").RegWrite ("HKLMSYSTEMCurrentControlSetServicesUSBSTORstart",4,"REG_DWORD")
MsgBox"USB设备已禁用,重新插入USB存储器后失效"
Else
lockusbport=CreateObject("Wscript.shell").RegWrite ("HKLMSYSTEMCurrentControlSetServicesUSBSTORstart",3,"REG_DWORD")
MsgBox"USB设备已启用,请重新插入USB存储器生效"
End If
Else
lockusbport=CreateObject("Wscript.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存储器的启用权限。
以上程序均已完美运行