Объект WScript
специфичен для Windows Script Host и не существует в .NET Framework.
На самом деле, все функциональные возможности объекта WScript.Shell
доступны в классах .NET Framework.Поэтому, если вы переносите код VBScript в VB.NET, вам следует переписать его, используя классы .NET, а не COM-объекты Windows Script Host.
Если по какой-то причине вы все равно предпочитаете использовать COM-объекты, вам необходимо добавить соответствующие ссылки на COM-библиотеки в ваш проект, чтобы эти объекты были доступны для вашего приложения.В случае WScript.Shell
это % WinDir% \ System32 \ wshom.ocx (или % WinDir% \ SysWOW64 \ wshom.ocx в 64-битной Windows).Тогда вы можете написать код так:
Imports IWshRuntimeLibrary
....
Dim shell As WshShell = New WshShell
MsgBox(shell.ExpandEnvironmentStrings("%windir%"))
Кроме того, вы можете создавать экземпляры COM-объектов, используя
Activator.CreateInstance(Type.GetTypeFromProgID(ProgID))
, а затем работать с ними, используя позднюю привязку.Например, *:
Imports System.Reflection
Imports System.Runtime.InteropServices
...
Dim shell As Object = Nothing
Dim wshtype As Type = Type.GetTypeFromProgID("WScript.Shell")
If Not wshtype Is Nothing Then
shell = Activator.CreateInstance(wshtype)
End If
If Not shell Is Nothing Then
Dim str As String = CStr(wshtype.InvokeMember(
"ExpandEnvironmentStrings",
BindingFlags.InvokeMethod,
Nothing,
shell,
{"%windir%"}
))
MsgBox(str)
' Do something else
Marshal.ReleaseComObject(shell)
End If
* Я плохо знаю VB.NET, поэтому этот код может быть уродливым;не стесняйтесь улучшать.