Create IIS Virtual Directory






3.06/5 (7 votes)
This is a command line program that will enable users to create a Virtual Directory on a local host.
Create Virtual Directory
Invalid Parameters
Entry In IIS
Introduction
As per the name, it's easy to guess what this project is all about, creating a virtual directory in the default web site (80). The program uses the IIS Administration SDK, which has the Active Directory Service Interfaces (ADSI) that helps VC++ to access the required functions and interfaces.
Background
I started looking on the net for similar programs that uses ADSI with VC++, but was not able to find one, so thought of creating one.
Using the code
To access the ADSI functions, we need to have the following header files.
// The basic header files used
iads.h
adshlp.h
iiisext.h
iisext_i.c
// Constant used to access the default port 80 // We take IIS://localhost/w3svc/1/Root // as the path to access the default web site const LPWSTR adsPATH = L"IIS://localhost/w3svc/1/Root";
IDispatch *pDisp = NULL; //Idispatch interface object IADs* iAds = NULL; //Active Directory Interface IADsContainer* iContainer = NULL; //Active Directory Container Interface IISApp *pApp = NULL; //Active Directory IIS Application interface
Access the ADSI object
//Get Object of Active Drectory Container ADsGetObject(adsPATH, IID_IADsContainer,(void **)&iContainer);
Creating a virtual directory
hr = iContainer->Create(L"IIsWebVirtualDir", cAppName, &pDisp);
Creating the application with the use of QueryInterface
hr = iAds->QueryInterface( IID_IISApp, (void **)&pApp );
Accessing the virtual directory property using the iAds interface
hr = iAds->Put(L"AccessRead",CComVariant(VARIANT_TRUE)); hr = iAds->Put(L"AccessWrite",CComVariant(VARIANT_TRUE)); hr = iAds->Put(L"AccessScript",CComVariant(VARIANT_TRUE)); hr = iAds->Put(L"AppIsolated",CComVariant(1)); hr = iAds->Put(L"EnableDirBrowsing",CComVariant(VARIANT_TRUE)); hr = iAds->Put(L"AppFriendlyName",CComVariant(cAppName)); hr = iAds->Put(L"Path",CComVariant(clPath)); //Virtual Dir Physicial Path
Update the changes to the ASDI objects
hr = iAds->SetInfo();
//Save Virtual Dir Application Information
Linking issues
You might end up in getting a link error. To solve this,s the following libraries need to be included:
Activeds.lib
Adsiid.lib
The currently supported languages are: C++.
Points of interest
While trying out lots of options, I had to interpret .NET code and transform it in to VC++, and one thing I found is whatever the language is, you just need a vision to make it work.