gpt4 book ai didi

vbscript - 为什么设置 USER 环境变量需要 12 秒?

转载 作者:行者123 更新时间:2023-12-04 19:54:43 26 4
gpt4 key购买 nike

使用以下代码,我遇到了可怕的运行时间:

Option Explicit

Dim ShellEnvironment: Set ShellEnvironment=CreateObject ("WScript.Shell").Environment ("USER")
Dim Name: Name="MyVar"
Dim NewVal: NewVal="This is my value"

Services.StartTransaction "SetEnv"
ShellEnvironment (Name)=NewVal
Services.EndTransaction ("SetEnv")

请注意,只有 Services.* 内容是特定于 QTP 的。两条语句生成如下运行结果条目,表示环境变量赋值的运行时间:

Transaction "SetEnv" ended with "Pass" status (Total Duration: 12.1970 sec). 

这是在一台非常快的机器上。当然,这是一个 Not Acceptable 长运行时间。

根据 Environment.SetEnvironmentVariable takes a long time to set a variable at User or Machine level ,这是因为所有顶级窗口都会收到 1 秒超时通知。我不确定这是否特定于 C#。嗯,显然不是。但是我不知道如何在 VBScript 下控制这个通知/超时过程。

所以一般来说,问题是:

如何在 VBScript 中设置 USER 环境变量而不会出现可怕的运行时?

最佳答案

似乎没有办法控制 ShellEnvironment 用于通知广播的超时

所以我决定构建一个解决方法。

我称这个脚本为:

Option Explicit

Dim Name
Dim NewVal

If WScript.Arguments.Count <> 2 then
WScript.Echo "setUSEREnv.vbs: Pass name and value of USER environment variable to set on the command line"
WScript.Quit (1)
End If

Name=CStr (WScript.Arguments.Item (0))
NewVal=CStr (WScript.Arguments.Item (1))

Dim ShellEnvironment: Set ShellEnvironment=CreateObject ("WScript.Shell").Environment ("USER")
If ShellEnvironment (Name) <> NewVal then
ShellEnvironment (Name)=NewVal
WScript.Echo "Setting USER env var '" & Name & "'..."
WScript.Echo "USER env var '" & Name & "' set to '" & NewVal & "'"
else
WScript.Echo "USER env var '" & Name & "' already is '" & NewVal & "'"
End If

使用 Run 从我的 setenv 函数代码:

Dim ShellEnvironment: Set ShellEnvironment=CreateObject ("WScript.Shell").Environment ("USER")

Dim Name: Name=EnvVarName
If ShellEnvironment (Name) <> NewVal Then
Dim Shell: Set Shell=CreateObject ("WScript.Shell")
Shell.Run "cscript.exe ""c:\mydir\setUSERENV.vbs"" " & Name & " " & CStr (NewVal), 0, false
End If

每次 env var 写入访问都会延迟很长时间,这仍然侮辱我,但至少主脚本继续运行,所以我不必等待。

关于vbscript - 为什么设置 USER 环境变量需要 12 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com