Start/Stop IIS 6 Services Programatically

Posted on 2004-03-24
Medium Priority
Last Modified: 2007-12-19
How to pragramatically start and stop IIS 6 (windows 2003) services in c++, especially the SMTP/NNTP services? Does the ADSI/WMI api have specific functions related to this?
Question by:bphanikumar
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 17

Expert Comment

ID: 10674334


You can use NET STOP [service name] /Y for any service that is running, just replace [service name] with the name of the service, you find the name of the service by going to Services..

Author Comment

ID: 10674561
But I want to do that programatically using the ADSI/WMI APIs in c++. With IIS5 Microsoft delivers the scripts Startsrv.vbs and Stopsrv.vbs but in IIS6 these scripts are not delivered.

To be more specific, programatically find all the services available for IIS6, their current state and able to start & stop each service...
LVL 11

Expert Comment

ID: 10675786
I am no C++ programmer, but in VB I programmed a tool which calls the Shell-API and does all work for me. Here are the important parts:

Option Explicit

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Const STILL_ACTIVE = &H103

Private Sub ShellWait(ByVal CommandLine As String, Optional ByVal WindowStyle As VbAppWinStyle = vbHide)
    Dim hProcess As Long
    Dim RetVal As Long
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(CommandLine, WindowStyle))
        GetExitCodeProcess hProcess, RetVal
        DoEvents: Sleep 100
    Loop While RetVal = STILL_ACTIVE
End Sub

Private Sub Form_Load()

    ShellWait "NET STOP IISADMIN /Y"

End Sub
Simplifying Server Workload Migrations

This use case outlines the migration challenges that organizations face and how the Acronis AnyData Engine supports physical-to-physical (P2P), physical-to-virtual (P2V), virtual to physical (V2P), and cross-virtual (V2V) migration scenarios to address these challenges.


Author Comment

ID: 10687557
Using WMI it's easy to configure IIS programmatically. WIM Studio gives extensive information about the classes to be used and other details.  But I can't use it for my application. Only ADSI to be used. Most of the sites explain using VBScript examples but rarely with C++/COM.  Like for the simple VBScript code shown below how do u write in C++,

        IIsObjectPath = "IIS://" & MachineName & "/" & ObjectPath
        Set IIsObject = GetObject(IIsObjectPath)

The code is picked from the adsutil.vbs file.

Accepted Solution

Ray earned 75 total points
ID: 10688116

Featured Post

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today I came across an interesting issue that had me pulling my hair out.  I was troubleshooting a new internal web site which uses integrated security instead of anonymous.  When browsing the site from my laptop, I was able to access it with no iss…
Logparser is the smartest tool I have ever used in parsing IIS log files and there are many interesting things I wanted to share with everyone one of the  real-world  scenario from my current project. Let's get started with  scenario - How do w…
In this brief tutorial Pawel from AdRem Software explains how you can quickly find out which services are running on your network, or what are the IP addresses of servers responsible for each service. Software used is freeware NetCrunch Tools (https…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …
Suggested Courses
Course of the Month15 days, 2 hours left to enroll

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question