千家信息网

怎么用vbs确定脚本正在哪一个帐户下运行

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要为大家展示了"怎么用vbs确定脚本正在哪一个帐户下运行",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么用vbs确定脚本正在哪一个帐户下运行"
千家信息网最后更新 2026年11月03日怎么用vbs确定脚本正在哪一个帐户下运行

这篇文章主要为大家展示了"怎么用vbs确定脚本正在哪一个帐户下运行",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"怎么用vbs确定脚本正在哪一个帐户下运行"这篇文章吧。

问:
如何确定脚本正在哪一个帐户下运行?
答:
您知道,自从我们以各种托辞而开设这一专栏以来已有一段时间了,对于我们而言,这并非易事:毕竟,寻找托辞是我们这些脚本专家的拿手好戏。明确了这一点,那就让我们以我们最喜欢的一个托辞开始吧:我们将向您介绍的脚本只在 Windows XP 和 Windows Server 2003 上有效。我们将向您介绍使得该脚本在 Windows 2000 上同样有效的方法,但后者绝对不及前者好。
噢,是的:现在感觉该方法不错。
好了,不找托辞了(至少是现在)。还是让我们讨论一下脚本吧。该脚本如下:

代码如下:


strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where " & _
"Name = 'cscript.exe' or Name = 'wscript.exe'")
For Each objProcess in colProcessList
If InStr(objProcess.CommandLine, "test.vbs") Then
colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
Wscript.Echo "This script is running under the account belonging to " _
& strUserDomain & "\" & strNameOfUser & "."
End If
Next


正如您所看到的那样,虽然也可很容易地针对远程计算机运行此脚本,但我们还是首先连接至本地计算机上的 WMI 服务。(是的,我们的确说过很多次这样的话了。但这并不是托辞,而只是陈述事实:几乎所有的 WMI 脚本针对远程计算机的运行效果都与它们在本地计算机上的运行效果一样好。我们确实时常在谈论一些实质内容!)
接下来我们遇到了下面这行代码:

代码如下:


Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where " & _
"Name = 'cscript.exe' or Name = 'wscript.exe'")


您可能已经猜到我们需要使用 Win32_Process 类来执行我们的任务,这是因为 Win32_Process 是用来跟踪计算机上当前运行的所有进程的 WMI 类。当然,我们并不关心计算机上运行的所有进程,我们只关心脚本。正因如此,我们添加了一个 Where 子句,该子句将只返回以下两个 Windows 脚本宿主的实例的信息:Cscript.exe 和 Wscript.exe。
注意:是的,我们本来可以以稍有不同的方式来编写此脚本的,或许那样会在进程中省下一两行代码。我们之所以选择了此方法,是因为该方法与我们在 Windows 2000 上执行此任务的方法更相似。
发出查询后,我们建立一个 For Each 循环,以遍历返回的集合。在本例中,我们试图确定名为 Test.vbs 的脚本的所有者。因此,我们需要检查每个脚本,以查看它的名称是否为 Test.vbs。我们如何去做呢?通过使用下面这行代码:
If InStr(objProcess.CommandLine, "test.vbs") Then
我们此处要做的是使用 InStr 函数来确定是否可在属性 CommandLine 中的某个位置找到字符串 test.vbs。什么是 CommandLine 属性?简单地说,它就是从命令提示符启动脚本所需的命令字符串。例如,CommandLine 可能为下列内容:
C:\Scripts\Test Scripts\Test.vbs
由于我们假定不存在名为 MyTest.vbs 的脚本,因此我们将检查 test.vbs。如果您担心此类名称冲突,那么,我们可以只使用 InStr 并针对类似 \test.vbs 的字符串进行测试。这是一个您必须决定的问题。
如果确实可以在 CommandLine 值中找到我们的目标字符串,则我们将调用 GetOwner 方法来找出进程的"所有者"(即,脚本在其下运行的帐户的名称):
objProcess.GetOwner(strNameOfUser,strUserDomain)
我们需要使用 GetOwner 传递一对"输出参数"。输出参数就是方法将用一个值对其进行填充的变量(由我们自己来命名该变量)。这里,我们将传递名为 strNameOfUser 和 strUserDomain 的变量。反过来,GetOwner 将用户名称和拥有进程的用户所在的域赋值给这两个变量。
此时我们所要做的就是回显返回信息:
Wscript.Echo "This script is running under the account belonging to " _
& strUserDomain & "\" & strNameOfUser & "."
那么,我们为何不能在 Windows 2000 上运行此脚本呢?实际上,有充分的理由来对此进行解释:只有 Windows XP 和 Windows Server 2003 上才有 CommandLine 属性。在其他版本的 Windows 上,我们无法标识各个脚本;最好的方法就是为恰好正在运行的 Cscript.exe 和 Wscript.exe 的所有实例返回所有者信息。如果只有一个脚本在运行,也同样没有问题:CScript.exe 或 Wscript.exe 的单个实例必须为该单个脚本。换句话说,这就意味着脚本宿主进程的所有者也是脚本进程的所有者。如果运行了多个脚本,则是另外一回事了。如果确实为此种情况,您最好是说:"嗯,Ken Myer 拥有其中的一个脚本,尽管我们不知道具体是哪一个。他未拥有的某个脚本恰好为 Pilar Ackerman 所拥有。
不,没有那么好。不过事实就是这样。(是的,这是一个托辞。尽管有点漏洞百出,但它仍是一个托辞。)
下面是 Windows 2000 解决方案(也可以说是:部分解决方案):

代码如下:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where " & _
"Name = 'cscript.exe' or Name = 'wscript.exe'")
For Each objProcess in colProcessList
objProcess.GetOwner strNameOfUser,strUserDomain
Wscript.Echo "A script is running under the account belonging to " _
& strUserDomain & "\" & strNameOfUser & "."
Next

以上是"怎么用vbs确定脚本正在哪一个帐户下运行"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

脚本 运行 托辞 方法 进程 代码 帐户 正在 内容 所有者 变量 名称 字符 字符串 就是 是的 计算机 信息 实例 属性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 华服互联网科技怎么样 智能科技公司是互联网公司吗 互联网科技战争 高科技与互联网 善班互联网科技 腾讯科技 互联网女皇 美国互联网黑科技 深圳艾佳互联网科技 湖南洣水互联网科技有限公司扣款 广州新华互联网科技学校电竞方面 翼展科技 首家互联网医院 科技赋能视角下互联网保险发展 工业互联网展湾科技股份有限公司 上海钢联属于互联网科技股吗 皮皮虾互联网科技有限公司 互联网风格科技公司名称 盐城市攀科互联网科技有限公司 数字科技和互联网金融哪个好 优雇互联网科技有限公司 互联网金融监管科技数据 青岛互联网科技公司 贷财互联网科技 广州凡科互联网科技 中盈科技互联网信息有限公司 宁夏科技产业互联网案例 湖北码尼互联网科技有限公司电话 互联网第三次科技革命特征 互联网硬科技公司 互联网公司属于科技吗
0