Click here to Skip to main content
13,250,883 members (51,207 online)
Click here to Skip to main content
Add your own
alternative version


15 bookmarked
Posted 22 Dec 2006

Create IIS Virtual Directory

, 22 Dec 2006
Rate this:
Please Sign up or sign in to vote.
This is a command line program that will enable users to create a Virtual Directory on a local host.

Create Virtual Directory

Create Virtual Directory

Invalid Parameters

Invalid Parameters

IIS Entry

Entry In IIS


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.


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
// 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:


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.


This article, along with any associated source code and files, is licensed under The Common Development and Distribution License (CDDL)


About the Author

Web Developer
India India
Sreeji Gopal working in VOIP domain and languages VC++,COM,C++,VB. Working as Sr.Software Engineer, with Alcatel-Lucent. I am working in this industry for 6 yrs.

You may also be interested in...


Comments and Discussions

GeneralCompile in VS 2005 Pin
shahhmatist12-Apr-07 5:52
membershahhmatist12-Apr-07 5:52 
GeneralRe: Compile in VS 2005 Pin
Zeef21-May-07 8:46
memberZeef21-May-07 8:46 
QuestionHow to set username and password Pin
Aarif Mohammad12-Jan-07 0:09
memberAarif Mohammad12-Jan-07 0:09 
QuestionWhy? Pin
Mark Nischalke22-Dec-06 19:05
memberMark Nischalke22-Dec-06 19:05 
AnswerRe: Why? Pin
moonwalker_n270022-Dec-06 19:32
membermoonwalker_n270022-Dec-06 19:32 
Which .NET code are you speaking about?

Best is not a perception but its you

GeneralRe: Why? Pin
Mark Nischalke23-Dec-06 3:50
memberMark Nischalke23-Dec-06 3:50 
GeneralRe: Why? Pin
moonwalker_n270023-Dec-06 6:30
membermoonwalker_n270023-Dec-06 6:30 
GeneralRe: Why? Pin
Mark Nischalke23-Dec-06 8:31
memberMark Nischalke23-Dec-06 8:31 
GeneralRe: Why? Pin
moonwalker_n270023-Dec-06 18:24
membermoonwalker_n270023-Dec-06 18:24 
GeneralRe: Why? Pin
Zeef21-May-07 8:50
memberZeef21-May-07 8:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.171114.1 | Last Updated 22 Dec 2006
Article Copyright 2006 by moonwalker_n2700
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid