You might be wondering how you can call a .NET DLL from a VB Script. Well, look no further, as I will explain how to achieve this in a step by step manner.
You might be wondering why you want to do this?
Why not just do everything in .NET or VBScript?
Well, there might be some instances where this will be useful, like modifying a start-up script for GPO which is already in VBScript, but you want to extend it safely (compiled codes) or just reuse available DLLs that are out there in your organization saving you time to redevelop the same thing again. There are a lot of reasons that you want to do this but this is why I am doing it, unless someone else suggests a better way of doing it. Anyways I am writing this so that if anyone needs this reference, it's just here.
Ok let's start with what you need. Definitely, you need to develop or use an existing DLL. For this example, we will develop it from scratch, you also need the VBScript that you want to edit or create and that’s it.
Your DLL. Fire up Visual Studio you can develop either in C#, VB or any language you want, this sample will be C#. You need to create a Class Library Project.
public class Operations
public string getValue1(string sParameter)
return "A was chosen";
return "B was chosen";
return "C was chosen";
public string getValue2()
return "From VBS String Function";
In the code above, apply the
ComVisibleAttribute Class controls accessibility of an individual managed type or member, or of all types within an assembly, to COM. You can apply this attribute to classes, structures, interfaces, delegates, enumerations, fields, methods, assemblies or properties. By default, it is set to
true but in case you want to hide the individual type, you can just set it to
false (I just showed it for reference purposes, as you notice the
getValue2 does not have that attribute, but still it is visible).
Build the project.
Now after creating this Class Library Project, you have to configure it so that when you compile, it will register on the systems assembly. There are two ways of doing that; one is to a command prompt. If you have .NET Framework 2.0 installed,
regasm would be in the following path at:
And use the following for registering and unregistering an assembly:
Register assembly manually
The one on top registers it and the one at the bottom unregisters it. Now what does the /codebase option stand for? You need to use the /codebase switch when you don’t have your assembly in GAC because that will add an absolute path for your assembly in registry so that COM client can find it.
Another option is Directly to Visual Studio, this is the easy way and it’s as easy as ticking a check box in the project properties.
Now you have your DLL ready.
Create your VBScript and here is my sample:
Set myObj = CreateObject("MyDLL.Operations")
Now run your VBScript and that’s it.