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

2024-01-30

使用以下代码,我经历了可怕的运行时:

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). 

这是在一台非常快的机器上进行的。当然,这是不可接受的长运行时间。

根据Environment.SetEnvironmentVariable 需要很长时间才能在用户或计算机级别设置变量 https://stackoverflow.com/questions/4825967/environment-setenvironmentvariable-takes-a-long-time-to-set-a-variable-at-user-o,这是因为所有顶级窗口都会收到 1 秒超时通知。我不确定这是否是 C# 特定的。嗯,显然不是。但我不知道如何在 VBScript 下控制此通知/超时过程。

所以一般来说,问题是:

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


这是一个很好的解决方法(在 C# 中):

var envName = "USERNAME";

var envValue = "JERRY";

// it's up to you if you await this or not
Task.Factory.StartNew(() => Environment.SetEnvironmentVariable(envName, envValue, EnvironmentVariableTarget.User));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么设置 USER 环境变量需要 12 秒? 的相关文章

  • SagePay 表单 - 经典 ASP - 使用 rijndael.asp 时缺少货币字段

    我正在尝试在经典 ASP 中添加 Form Intergration SagePay 支付网关 我有一个来自 SO 的可用 PHP 版本 我已将其翻译成 VBSCRIPT 一切似乎都工作正常 但加密除外 我使用与 PHP 脚本相同的输入 以
  • 将字符串转换为 UTF-8

    例如 我有一个分配给编码为 ansi 的变量的字符串str 如何将其编码为 UTF 8 你的意思是当它写入文件时 像这样 Set stream CreateObject ADODB Stream stream Open stream Typ
  • 如何将 VBScript 转换为可执行 (EXE) 文件? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我四处寻找转换 VBScript 的信息 vbs 到可执行文件 并意识到大多数可用的工具实际上是将脚本包装在可执行文件中 尝试了一些工
  • 顺序执行批处理文件

    dim shell x y x D d y c bat x set shell createobject wscript shell shell run y shell run a bat set shell nothing 当我运行此脚本
  • WScript.Shell.Exec - 从 stdout 读取输出

    我的 VBScript 不显示我执行的任何命令的结果 我知道命令被执行 但我想捕获结果 我已经测试了多种方法来执行此操作 例如以下方法 Const WshFinished 1 Const WshFailed 2 strCommand pin
  • 什么时候必须将 XPath 属性设置为 XML DOM 对象?

    例如 Set objXML CreateObject Microsoft XMLDOM objXML async False objXML validateOnParse False objXML resolveExternals Fals
  • 有关于 VBScript 正则表达式对象 (RegExp) 的好文档吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们都知道每个正则表达式实现都有其自身的特点 我需要在使用 COM 自动化的应用程序中使用 Micros
  • 等待程序完成

    为了监视带宽使用情况并且不要在启动时加载不必要的程序 我想先执行dumeter exe 然后执行firefox exe 当我关闭firefox时 它应该杀死dumeter 我使用以下代码启动 Set WshShell WScript Cre
  • 我对一些小概念感到困惑

    我对 VBscript 非常陌生 正在努力学习所有概念 在我的实践过程中 我一直有一个疑问 dim a b c set a CreateObject scripting filesystemobject initiate the file
  • 如何在远程机器上执行vbs文件

    如何在不使用 PsExec 的情况下执行位于同一域中的远程计算机上的 VBScript 我尝试了以下代码 但没有运气 Sub RunCommand strComputer Command Set objWMIService GetObjec
  • 使用 ASP 将参数传递给存储过程

    我正在尝试将一些参数传递给经典 ASP 中的 SQL 存储过程 我看过几篇关于此的帖子 不确定我做错了什么 因为我似乎没有看到我的差异 set conn CreateObject ADODB Connection conn open DSN
  • 无法从 vbs 脚本使用 smtp.gmail.com、端口 587 发送邮件

    我正在尝试使用 vbs 脚本发送邮件 但它不起作用 我正在使用服务器 smtp gmail com 和端口 587 奇怪的是 当我将端口更改为 25 时 它会起作用 下面是我正在使用的代码 SMTPMail to cc TEST TEST
  • ObjChildItem.Click() 在循环中无法正常工作

    I am using UFT One to test a Salesforce Contacts table with two rows that have clickable links Jim Bean and Marsha Smith
  • ATL创建的COM接口继承IDispatch但后期绑定不起作用

    这是我的 IDL 文件 IFrame 是一个双接口 同时继承了 IDispatch 和 IUnknown object uuid C5AD0517 37FC 479C 9C7A A063B17E4A2E dual nonextensible
  • VBscript“预期语句”错误

    我正在开发一个 vbscript 程序 但出现了 预期语句 错误 我找不到错误 我看过这个错误的一些示例 但它们对我没有帮助 我是 vbscript 新手 这是代码 Sub SetText tx lw Dim t l r a t 1 l L
  • vbs脚本通过ftp发送文件并检查/删除原始文件

    我正在尝试通过 ftp 发送文件 然后检查该过程是否成功完成 如果成功 我将删除原始文件并仅保留在 FTP 上的目标文件夹中发送的文件 我设法修补了一个连接到 FTP 并发送文件的脚本 但我不确定如何将原始文件夹与 FTP 上的文件夹进行交
  • 如何使用 VbScript 创建选项对话框?

    我有一个第三方应用程序 它调用 vsbscript 文件来执行某些操作 我想提供一个带有选项选择的用户提示 可以是下拉列表或复选框或类似的选项 然而 我能找到的只是输入框选项 我不认为 HTA 适合我的情况 除非有办法从 vbs 文件调用它
  • 如何将 2 数组放入配置(.ini)文件中? [复制]

    这个问题在这里已经有答案了 我有这个简单的 VBScript 基本代码 Dim cars cars Array Volvo Saab BMW Dim fruits fruits Array Apple Orange Banana Dim i
  • 列表分隔符脚本

    如何从命令行更改列表分隔符 通常我必须编辑以下字段 控制面板 更改键盘或其他输入法 其他设置 我想创建一个 VBScript 单击它会自动更改 to 还有另一个可以返回的 一个脚本就足够了 该设置存储在注册表值中HKCU ControlPa
  • 从“查找”结果中出现“下标超出范围”错误

    我想在 Excel 工作表中查找一个字符串 Excel 单元格值是使用公式计算的 当我运行这段代码时 Set firstExcel CreateObject Excel application firstExcel Workbooks Op

随机推荐