0

是否可以在 VB.net 2008 项目中包含一个 VBScript (test.vbs) 并在需要处理时运行它?但主要的是应该可以只构建一个 .exe。

如果是这样,您还可以从 VBS 文件中接收值/参数吗?

这里举个例子,虽然没什么意义,但是用来理解的:

  1. VB.net -> exe 正在运行
  2. exe运行please_find_the_coputername.vbs
  3. 脚本please_find_the_coputername.vbs-> 获取计算机名称并将此变量发送到 VB.net
  4. VB.Net 通过显示计算机名称Msgbox()

注意:我知道我可以用 VB.net 读出计算机名,但这个例子只是为了理解我的问题。

编辑:

嗨@maxedev 谢谢你的回答。哇..它的好把戏。但我只想在 VB.net 中执行此 VBScript 代码:

Dim strComputer

strComputer = "LP-BKR"

Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
  & strComputer & "\root\cimv2")

Set colComputer = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
  Wscript.Echo "Logged-on Domain: " & objComputer.Domain
  Wscript.Echo "Logged-on UserName: " & objComputer.UserName
  Wscript.Echo "Logged-on ComputerName: " & objComputer.Name
Next

set objWMIService = Nothing
set colComputer = Nothing

我搜索了一整天以获得相同的价值......但没有找到任何东西。这就是为什么我决定这样做。但如果我认为,剪贴板的把戏是有风险的。它将静止的剪贴板文本推开。我怎样才能意识到它?

4

3 回答 3

1

我不确定你想要完成什么,但你可以写入一个文本文件,然后通过 vb.net 读取它 - 或者你可以做类似这篇文章的事情来使用剪贴板传递信息,即:

VBS:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c echo hello world | clip", 0, TRUE

VB.NET:

MessageBox.Show(Clipboard.GetText)

--显示“你好世界”

于 2013-05-20T20:47:55.850 回答
0

Windows 会自动提供您在环境变量中寻找的信息:

%USERNAME%      -> username of the logged in user
%USERDOMAIN%    -> WINS name of the domain the user is logged into
%USERDNSDOMAIN% -> FQDN of the domain the user is logged into
%COMPUTERNAME%  -> hostname of the computer
于 2013-05-21T09:40:36.173 回答
0

一种解决方案是添加对 MS 脚本控件的引用:http: //msdn.microsoft.com/en-us/library/aa227400 (v=vs.60).aspx

使用它,您可以使用 AddCode() 方法添加字面上的添加代码 (VBScript),然后运行它并获取输出。我这里有一个小例子。

于 2013-05-20T21:22:38.430 回答