Share via


Getting the Host Domain Name

Getting the Host Domain Name

This content is no longer actively maintained. It is provided as is, for anyone who may still be using these technologies, with no warranties or claims of accuracy with regard to the most recent product version or service release.

When you use The File: URL Scheme to identify the location of items in the Exchange store, you need the fully qualified domain name of the host. The following programming task demonstrates how to retrieve the domain name of the host on which the code is running.

To increase performance, you should retrieve this name once, store it, and then use the stored version when constructing a URL. For example, if you are writing an ASP application, retrieve the domain name and then place this information in the ASP Application collection for subsequent use by other scripts.

VBScript

Function GetDomainName()

 Dim Info
 Set Info = CreateObject("AdSystemInfo")
 GetDomainName = Info.DomainDNSName

End Function

Function GetComputerName()

 Dim InfoNT
 Set InfoNT = CreateObject("WinNTSystemInfo")
 GetComputerName = lcase(InfoNT.ComputerName)

End Function

Function GetForestDNSName()

 Dim Info
 Set Info = CreateObject("AdSystemInfo")
 GetForestDNSName = Info.ForestDNSName

End Function

Visual Basic

Function GetDomainName()

 Dim Info As New ADSystemInfo
 GetDomainName = Info.DomainDNSName

End Function

Function GetComputerName()

 Dim InfoNT As New WinNTSystemInfo
 GetComputerName = LCase(InfoNT.ComputerName)

End Function

Function GetForestDNSName()

 Dim Info As New ADSystemInfo
 GetForestDNSName = Info.ForestDNSName

End Function

Visual C++

#define _WIN32_WINNT 0x0500
#define _UNICODE
#define UNICODE

#include <windows.h>
#include <comdef.h>
#define BUF_SIZE 4096

bstr_t getHostDomainName() {

   HRESULT hr     = S_OK;
   BSTR   domainName;
   DWORD dwSize  = 0;
   wchar_t* pBuf = new wchar_t[BUF_SIZE];
   if(pBuf == NULL)
      _com_issue_error(E_OUTOFMEMORY);

   if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsDomain,
                     pBuf,
                     &dwSize)) {
      if(GetLastError() == ERROR_MORE_DATA) {
         delete [] pBuf;
         pBuf = new wchar_t[dwSize+1];
         if(pBuf == NULL)
            _com_issue_error(E_OUTOFMEMORY);

         if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsDomain, pBuf, &dwSize) ) {
            hr =   HRESULT_FROM_WIN32(GetLastError());
            delete [] pBuf;
            pBuf    = NULL;
            _com_issue_error(hr);
         }
      }
      else
         _com_issue_error(HRESULT_FROM_WIN32(GetLastError()));
   }

   domainName = SysAllocString(pBuf);
   delete [] pBuf;

   return bstr_t(domainName, false);
}



#define _WIN32_WINNT 0x0500
#define _UNICODE
#define UNICODE

#include <windows.h>
#include <comdef.h>
#define BUF_SIZE 4096

bstr_t getHostName() {

   HRESULT hr         = S_OK;
   BSTR   hostName;
   DWORD   dwSize      = 0;
   wchar_t* pBuf = new wchar_t[BUF_SIZE];
   if(pBuf == NULL)
      _com_issue_error(E_OUTOFMEMORY);

   if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsHostname,
                     pBuf,
                     &dwSize)) {
      if(GetLastError() == ERROR_MORE_DATA) {
         delete [] pBuf;
         pBuf = new wchar_t[dwSize+1];
         if(pBuf == NULL)
            _com_issue_error(E_OUTOFMEMORY);

         if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsHostname, pBuf, &dwSize) ) {
            hr =   HRESULT_FROM_WIN32(GetLastError());
            delete [] pBuf;
            pBuf    = NULL;
            _com_issue_error(hr);
         }
      }
      else
         _com_issue_error(HRESULT_FROM_WIN32(GetLastError()));
   }

   hostName = SysAllocString(pBuf);
   delete [] pBuf;

   return bstr_t(hostName, false);
}



#define _WIN32_WINNT 0x0500
#define _UNICODE
#define UNICODE

#include <windows.h>
#include <comdef.h>
#define BUF_SIZE 4096

bstr_t getFQDName() {

   HRESULT hr         = S_OK;
   BSTR   fqdname;
   DWORD   dwSize      = 0;
   wchar_t* pBuf = new wchar_t[BUF_SIZE];
   if(pBuf == NULL)
      _com_issue_error(E_OUTOFMEMORY);

   if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsFullyQualified,
                     pBuf,
                     &dwSize)) {
      if(GetLastError() == ERROR_MORE_DATA) {
         delete [] pBuf;
         pBuf = new wchar_t[dwSize+1];
         if(pBuf == NULL)
            _com_issue_error(E_OUTOFMEMORY);

         if(!GetComputerNameEx((COMPUTER_NAME_FORMAT)ComputerNameDnsFullyQualified, pBuf, &dwSize) ) {
            hr =   HRESULT_FROM_WIN32(GetLastError());
            delete [] pBuf;
            pBuf    = NULL;
            _com_issue_error(hr);
         }
      }
      else
         _com_issue_error(HRESULT_FROM_WIN32(GetLastError()));
   }

   fqdname = SysAllocString(pBuf);
   delete [] pBuf;

   return bstr_t(fqdname, false);
}


Send us your feedback about the Microsoft Exchange Server 2003 SDK.

Build: June 2007 (2007.618.1)

© 2003-2006 Microsoft Corporation. All rights reserved. Terms of use.