vbs脚本权限怎样解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vbs脚本权限怎样解决相关的知识,希望对你有一定的参考价值。

1、检查系统是否禁止使用了脚本运行,即打开“INTERNET选项”的“安全”选项卡里“自定义级别”,看看“ActiveX空件及服务”禁用的选项。
2、运行
regsvr32
scrrun.dll,即打开运行输入CMD,输入regsvr32
scrrun.dll,再回车。
3、最关键的一步,即看看注册表里的这个位置HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
Script
Host\Settings在右边的窗口中是不是有个名为
Enabled的DWORD键值,有的话把它删除或者把值该为
1
即可。
4、重新运行VBS文件即将正常。
参考技术A 检查系统是不是禁用了VBS脚本权限怎样办啊:
答:reg
add
系统是不是禁用vbs脚本权限:
问:创建对象失败,检查系统是不是禁用vbs脚本权限:
答:呵呵,其实很好解决啊!
参考技术B win7系统,我开脚本,提示请检查系统是不是禁用vbs脚本权限。
怎样处…
创建对象失败,检查系统是不是禁用了vbs脚本权限.
简游提示:请检测系统是不是

我可以通过全局脚本消除 VBS 重复代码吗?

【中文标题】我可以通过全局脚本消除 VBS 重复代码吗?【英文标题】:Can I eliminate VBS duplicated code via a global script? 【发布时间】:2020-11-05 13:59:30 【问题描述】:

我对 VBS 并不太熟悉,也不知道如何最好地解决这个问题。

我有这个基本代码可以工作,当来自机器的值 >= 100 时,它会发送一封电子邮件。每当变量值发生变化时,WinCC 都会触发此脚本。

现在,我想在其他一些值上使用它来监控机器和设备的部件并发送一些电子邮件警报。

但是,是否需要在每个脚本中复制整个电子邮件设置代码,或者是否有一种方法可以让触发的代码调用包含电子邮件设置的全局脚本?

所以而不是“触发 VBS - 检查值 - 如果为真 - 这是电子邮件详细信息 - 发送电子邮件”

它更像是“触发 VBS - 检查值 - 如果为真 - 加载电子邮件设置 VBS - 发送电子邮件”

希望这有意义吗?

Option Explicit
Function action

Dim TagVari1
Dim TagVari2

Set TagVari1 = HMIRuntime.Tags("TestTag1")
TagVari1.Read
TagVari1.Value = TagVari1.Value +1

Set TagVari2 = HMIRuntime.Tags("TestTag2")
TagVari2.Read

TagVari2.Value = TagVari1.Value

TagVari2.Write

If TagVari2.Value >= 100 Then

    Dim objMessage
    

    Set objMessage = CreateObject("CDO.Message")
    
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.mydomain.com"

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
    
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "my.email@mydomain.com"

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"

    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    
    objMessage.Configuration.Fields.Item _
    ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = "30"
    objMessage.Configuration.Fields.Update
    
    objMessage.Subject = "WinCC Message"
    objMessage.From = "my.email@mydomain.com"
    objMessage.To = "recip.email@outlook.com"
    objMessage.TextBody = "This is a test message from WinCC......"
    objMessage.Send
    
    x=Msgbox("CHP Alarm" ,0, "Tag2 equal or over 100")

End If

End Function

【问题讨论】:

它必须在另一个vbs中吗?你不能在同一个文件中创建一个子或函数并调用它吗? 这能回答你的问题吗? How do I include a common file in VBScript (similar to C #include)? Geert,不,那行不通。在 WinCC 中有触发脚本的动作。因此,根据监控的内容,可能会有多种操作,并且每个操作都会触发不同的脚本。当谈到通过电子邮件发送警报时,我可能有一堆不同的操作,它们都在其中使用相同的脚本。我想为每个脚本编写变量,然后运行一个单独的电子邮件脚本。这样,如果我以后需要更改电子邮件详细信息,则只有一个脚本可以修改,而不是 30 或 40 个脚本。 @MarkLee 所以副本没有帮助?恐怕它们是您唯一的选择,如果它们都不适用于 WinCC,那您就倒霉了,但好像您没有表明您是否看过它们,我想我们不会知道。 Lanymart - 是的,复制它可以正常工作。我有 3 个不同的脚本设置用于测试,每个都包含相同的电子邮件代码,但具有不同的主题、正文、电子邮件等。我想推出更多警报,目前我已经确定了 37 个。但在此之前,我想知道我是否可以摆脱重复的代码,这样我就有了一点电子邮件安全代码。如果我必须更改它,我将有 37 多段代码需要更改。 【参考方案1】:

这里是如何包含另一个 *.vbs,由 Frank-Peter Schultze 提供

将此 Sub 放入您的主脚本中:

'------------------------------------------------------------------------------
'Purpose  : Include another VBScript file into the current one.
'Note     : Usage: Include("vbsfile.vbs")
'
'   Author: Frank-Peter Schultze
'   Source: http://www.fpschultze.de/smartfaq+faq.faqid+51.htm
'------------------------------------------------------------------------------
Sub Include(ByVal strFilename)
    Dim objFileSys, objFile, strContent

    Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject")
    Set objFile    = objFileSys.OpenTextFile(strFilename, 1)
    strContent     = objFile.ReadAll

    objFile.Close
    Set objFileSys = Nothing

    ExecuteGlobal strContent

End Sub
'------------------------------------------------------------------------------

让您的电子邮件在另一个脚本中发送例程,例如MySendMail.vbs

然后在你的主脚本开头的某个地方调用它

Include("Full\Path\To\MySendMail.vbs")

这是一个警告:包含的文件名必须通过包含驱动器的完整路径传递给 Sub。

【讨论】:

为什么要重复回答already in the duplicate?你不认为它被标记为重复是有原因的吗? 因为我明显是个盲人。我的错,对不起。

以上是关于vbs脚本权限怎样解决的主要内容,如果未能解决你的问题,请参考以下文章

怎样用cmd执行vbs脚本,求简单实用命令

怎么让vbs脚本开机自动启动

关于域用户启动脚本(vbs)不执行问题

vbs怎样操纵java的GUI

如何从 vbs 以管理员身份运行 vbs?

如何让英雄联盟启动后执行vbs