[help]detect the status of iis server
-
really, i know basic of c, c++, java, html\xhtml, vb, etc. this is the frist time i am doing the advance level programming. i want to learn asp .net but not know.
rahuljin wrote:
this is the frist time i am doing the advance level programming.
It's not really an advanced topic as much as it is a specialized topic. See here for an idea.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
rahuljin wrote:
this is the frist time i am doing the advance level programming.
It's not really an advanced topic as much as it is a specialized topic. See here for an idea.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
thanks for the link. i have tried to write some code but it is not working. can u find the mistake i am making ? i want to find the status of the service "W3SVC", and when it is running, the program should print "Found" ----
#ifndef UNICODE #define UNICODE #endif #include <stdio.h> #include <assert.h> #include <windows.h> #include <lm.h> #include <tchar.h> #include <wchar.h> int wmain(int argc, wchar_t * argv[]) { LPSERVER_INFO_101 pBuf = NULL; LPSERVER_INFO_101 pTmpBuf; DWORD dwLevel = 101; DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; DWORD dwTotalCount = 0; DWORD dwServerType = SV_TYPE_SERVER; // all servers DWORD dwResumeHandle = 0; NET_API_STATUS nStatus; LPTSTR pszServerName = NULL; LPTSTR pszDomainName = NULL; DWORD i; if (argc > 2) { fwprintf(stderr, L"Usage: %s [DomainName]\n", argv[0]); exit(1); } // The request is not for the primary domain. // if (argc == 2) pszDomainName = argv[1]; // // Call the NetServerEnum function to retrieve information // for all servers, specifying information level 101. // nStatus = NetServerEnum((LPCWSTR) pszServerName, dwLevel, (LPBYTE *) & pBuf, dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries, dwServerType, (LPCWSTR) pszDomainName, &dwResumeHandle); // // If the call succeeds, // if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA)) { if ((pTmpBuf = pBuf) != NULL) { // // Loop through the entries and // print the data for all server types. // for (i = 0; i < dwEntriesRead; i++) { assert(pTmpBuf != NULL); if (pTmpBuf == NULL) { fprintf(stderr, "An access violation has occurred\n"); break; } printf("\tPlatform: %d\n", pTmpBuf->sv101_platform_id); wprintf(L"\tName: %s\n", pTmpBuf->sv101_name); printf("\tVersion: %d.%d\n", pTmpBuf->sv101_version_major, pTmpBu
-
thanks for the link. i have tried to write some code but it is not working. can u find the mistake i am making ? i want to find the status of the service "W3SVC", and when it is running, the program should print "Found" ----
#ifndef UNICODE #define UNICODE #endif #include <stdio.h> #include <assert.h> #include <windows.h> #include <lm.h> #include <tchar.h> #include <wchar.h> int wmain(int argc, wchar_t * argv[]) { LPSERVER_INFO_101 pBuf = NULL; LPSERVER_INFO_101 pTmpBuf; DWORD dwLevel = 101; DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH; DWORD dwEntriesRead = 0; DWORD dwTotalEntries = 0; DWORD dwTotalCount = 0; DWORD dwServerType = SV_TYPE_SERVER; // all servers DWORD dwResumeHandle = 0; NET_API_STATUS nStatus; LPTSTR pszServerName = NULL; LPTSTR pszDomainName = NULL; DWORD i; if (argc > 2) { fwprintf(stderr, L"Usage: %s [DomainName]\n", argv[0]); exit(1); } // The request is not for the primary domain. // if (argc == 2) pszDomainName = argv[1]; // // Call the NetServerEnum function to retrieve information // for all servers, specifying information level 101. // nStatus = NetServerEnum((LPCWSTR) pszServerName, dwLevel, (LPBYTE *) & pBuf, dwPrefMaxLen, &dwEntriesRead, &dwTotalEntries, dwServerType, (LPCWSTR) pszDomainName, &dwResumeHandle); // // If the call succeeds, // if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_DATA)) { if ((pTmpBuf = pBuf) != NULL) { // // Loop through the entries and // print the data for all server types. // for (i = 0; i < dwEntriesRead; i++) { assert(pTmpBuf != NULL); if (pTmpBuf == NULL) { fprintf(stderr, "An access violation has occurred\n"); break; } printf("\tPlatform: %d\n", pTmpBuf->sv101_platform_id); wprintf(L"\tName: %s\n", pTmpBuf->sv101_name); printf("\tVersion: %d.%d\n", pTmpBuf->sv101_version_major, pTmpBu
rahuljin wrote:
if ((QueryServiceStatus(hService, &ss) == SERVICE_RUNNING)||(QueryServiceStatus(hService, &ss) == SERVICE_START_PENDING)) printf("Found");
Should be:
if (QueryServiceStatus(hService, &ss) != FALSE)
{
if (ss.dwCurrentState == SERVICE_RUNNING || ss.dwCurrentState == SERVICE_START_PENDING)
printf("Found");
}"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
rahuljin wrote:
if ((QueryServiceStatus(hService, &ss) == SERVICE_RUNNING)||(QueryServiceStatus(hService, &ss) == SERVICE_START_PENDING)) printf("Found");
Should be:
if (QueryServiceStatus(hService, &ss) != FALSE)
{
if (ss.dwCurrentState == SERVICE_RUNNING || ss.dwCurrentState == SERVICE_START_PENDING)
printf("Found");
}"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
thanks, it is working now. i will bother u soon if i stuck in something. one more thing i want to ask. currently i have only one computer so no network. will this program work on a network of computers too ? i cant check myself. suppose i run it on a client, will it give the info of server or all the computers in the network (clients + servers) ? also, if i have the ip address of the server then how to use it in this program ? thanks again :thumbsup: rahul update : when i make a try to make a array of processes like this -------
wchar_t selPro[] = { _T("W3SVC"), _T("Iisadmin")};
SC_HANDLE hService = OpenService(hSCM, selPro[j], SERVICE_QUERY_STATUS);
where j is for "for" lool (0,1). when i compile this code, compiling completes without any error and when i try to run it, it crashes. if i pass without array, it works fine. please guide me
modified on Saturday, June 13, 2009 5:05 PM
-
thanks, it is working now. i will bother u soon if i stuck in something. one more thing i want to ask. currently i have only one computer so no network. will this program work on a network of computers too ? i cant check myself. suppose i run it on a client, will it give the info of server or all the computers in the network (clients + servers) ? also, if i have the ip address of the server then how to use it in this program ? thanks again :thumbsup: rahul update : when i make a try to make a array of processes like this -------
wchar_t selPro[] = { _T("W3SVC"), _T("Iisadmin")};
SC_HANDLE hService = OpenService(hSCM, selPro[j], SERVICE_QUERY_STATUS);
where j is for "for" lool (0,1). when i compile this code, compiling completes without any error and when i try to run it, it crashes. if i pass without array, it works fine. please guide me
modified on Saturday, June 13, 2009 5:05 PM
rahuljin wrote:
will this program work on a network of computers too ?
That's what
NetServerEnum()
is for.rahuljin wrote:
suppose i run it on a client, will it give the info of server or all the computers in the network (clients + servers) ?
First, did you try it? Second, did you check MSDN to see how
OpenSCManager()
handles its first argument?rahuljin wrote:
also, if i have the ip address of the server then how to use it in this program ?
Convert the IP address to the host name using
gethostbyaddr()
.rahuljin wrote:
...it crashes.
Meaning what? A "crash" is fairly meaningless.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
rahuljin wrote:
will this program work on a network of computers too ?
That's what
NetServerEnum()
is for.rahuljin wrote:
suppose i run it on a client, will it give the info of server or all the computers in the network (clients + servers) ?
First, did you try it? Second, did you check MSDN to see how
OpenSCManager()
handles its first argument?rahuljin wrote:
also, if i have the ip address of the server then how to use it in this program ?
Convert the IP address to the host name using
gethostbyaddr()
.rahuljin wrote:
...it crashes.
Meaning what? A "crash" is fairly meaningless.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
here is error from windows. it says "new01" has stopped working
Problem signature:
Problem Event Name: APPCRASH
Application Name: new01.exe
Application Version: 0.0.0.0
Application Timestamp: 4a349ab0
Fault Module Name: RPCRT4.dll
Fault Module Version: 6.1.7100.0
Fault Module Timestamp: 49eea681
Exception Code: c0000005
Exception Offset: 0002f3b0
OS Version: 6.1.7100.2.0.0.256.1
Locale ID: 16393
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txthere is the complete code of the program ----
// setting unicode
#ifndef UNICODE
#define UNICODE
#endif// header files
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <lm.h>
#include <tchar.h>
#include <wchar.h>void printServer(LPSERVER_INFO_101 ppTmpBuf, DWORD ddwEntriesRead)
{
SC_HANDLE hSCM;
SERVICE_STATUS ss;
DWORD i;
short int j, x;
x = 2;
wchar_t* prName[] = {\_T("W3SVC"), \_T("Themes") }; for (i = 0; i < ddwEntriesRead; i++) { for(j=0; j<x ; j++) { hSCM = OpenSCManager((LPCTSTR) ppTmpBuf->sv101\_name, NULL, SC\_MANAGER\_CONNECT); if (hSCM != NULL) { SC\_HANDLE hService = OpenService(hSCM, prName\[j\], SERVICE\_QUERY\_STATUS); if (hService != NULL) { if (QueryServiceStatus(hService, &ss) != FALSE) { if ((ss.dwCurrentState == SERVICE\_RUNNING)||(ss.dwCurrentState == SERVICE\_START\_PENDING)) wprintf(\_T("%-20s %-15s This service is running.\\n"),ppTmpBuf->sv101\_name, prName\[j\]); else wprintf(\_T("%-20s %-15s This service is stopped or not found.\\n"),ppTmpBuf->sv101\_name, prName\[j\]); } CloseServiceHandle(hService); }
-
here is error from windows. it says "new01" has stopped working
Problem signature:
Problem Event Name: APPCRASH
Application Name: new01.exe
Application Version: 0.0.0.0
Application Timestamp: 4a349ab0
Fault Module Name: RPCRT4.dll
Fault Module Version: 6.1.7100.0
Fault Module Timestamp: 49eea681
Exception Code: c0000005
Exception Offset: 0002f3b0
OS Version: 6.1.7100.2.0.0.256.1
Locale ID: 16393
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txthere is the complete code of the program ----
// setting unicode
#ifndef UNICODE
#define UNICODE
#endif// header files
#include <stdio.h>
#include <assert.h>
#include <windows.h>
#include <lm.h>
#include <tchar.h>
#include <wchar.h>void printServer(LPSERVER_INFO_101 ppTmpBuf, DWORD ddwEntriesRead)
{
SC_HANDLE hSCM;
SERVICE_STATUS ss;
DWORD i;
short int j, x;
x = 2;
wchar_t* prName[] = {\_T("W3SVC"), \_T("Themes") }; for (i = 0; i < ddwEntriesRead; i++) { for(j=0; j<x ; j++) { hSCM = OpenSCManager((LPCTSTR) ppTmpBuf->sv101\_name, NULL, SC\_MANAGER\_CONNECT); if (hSCM != NULL) { SC\_HANDLE hService = OpenService(hSCM, prName\[j\], SERVICE\_QUERY\_STATUS); if (hService != NULL) { if (QueryServiceStatus(hService, &ss) != FALSE) { if ((ss.dwCurrentState == SERVICE\_RUNNING)||(ss.dwCurrentState == SERVICE\_START\_PENDING)) wprintf(\_T("%-20s %-15s This service is running.\\n"),ppTmpBuf->sv101\_name, prName\[j\]); else wprintf(\_T("%-20s %-15s This service is stopped or not found.\\n"),ppTmpBuf->sv101\_name, prName\[j\]); } CloseServiceHandle(hService); }
So where's the problem?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
So where's the problem?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
when i remove the following statements from the program, program run without any error.
NetApiBufferFree(ppTmpBuf);
NetApiBufferFree(pTmpBuf);what may be the problem with this ?
rahuljin wrote:
what may be the problem with this ?
It appears you are freeing the same memory three times.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
-
rahuljin wrote:
what may be the problem with this ?
It appears you are freeing the same memory three times.
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
yes, that may be the reason for the program crash. is there a way to access from a client if it have minimum access ? i mean that the client can access only a few folder in the other pc. also when i try this program on xp OS system, it gives the error --- NetQueryDisplayInformation gave error ERROR_ACCESS_DENIED. Due to this error, it does not display the status of service even of the system it is running on. it is a client pc. though i can ping the ip of other computers in the network. is there any remedy for this ?
modified on Tuesday, June 16, 2009 3:50 AM