You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
3.7 KiB
148 lines
3.7 KiB
#include "stdafx.hxx"
|
|
#include "vs_inc.hxx"
|
|
#include "iadmw.h"
|
|
#include "iiscnfg.h"
|
|
#include "vs_reg.hxx"
|
|
#include "stssites.hxx"
|
|
|
|
|
|
void Usage()
|
|
{
|
|
wprintf(L"stssites list\n");
|
|
wprintf(L"stssites lock site time\n");
|
|
wprintf(L"\twhere site is the site number\n");
|
|
wprintf(L"\twhere time is the # of seconds to hold the lock\n");
|
|
}
|
|
|
|
void InitializeSites(CSTSSites &sites)
|
|
{
|
|
if (!sites.ValidateSharepointVersion())
|
|
{
|
|
wprintf(L"Sharepoint 5.0 is not installed on this machine.\n");
|
|
throw E_INVALIDARG;
|
|
}
|
|
|
|
if (!sites.Initialize())
|
|
{
|
|
wprintf(L"CSTSSites::Initialize failed.\n");
|
|
throw E_INVALIDARG;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void ListSites()
|
|
{
|
|
CSTSSites sites;
|
|
InitializeSites(sites);
|
|
DWORD cSites = sites.GetSiteCount();
|
|
for(DWORD iSite = 0; iSite < cSites; iSite++)
|
|
{
|
|
DWORD siteId = sites.GetSiteId(iSite);
|
|
wprintf(L"Site 0x%08x\n", siteId);
|
|
VSS_PWSZ wszComment = sites.GetSiteComment(iSite);
|
|
wprintf(L"Site name (comment) = %s\n", wszComment);
|
|
CoTaskMemFree(wszComment);
|
|
VSS_PWSZ wszIpAddress = sites.GetSiteIpAddress(iSite);
|
|
VSS_PWSZ wszHost = sites.GetSiteHost(iSite);
|
|
DWORD dwPort = sites.GetSitePort(iSite);
|
|
if (wszIpAddress)
|
|
{
|
|
wprintf(L"IpAddress = %s\n", wszIpAddress);
|
|
CoTaskMemFree(wszIpAddress);
|
|
}
|
|
|
|
if (wszHost)
|
|
{
|
|
wprintf(L"Host = %s\n", wszHost);
|
|
CoTaskMemFree(wszHost);
|
|
}
|
|
|
|
wprintf(L"Port = %d\n", dwPort);
|
|
VSS_PWSZ wszDsn = sites.GetSiteDSN(iSite);
|
|
wprintf(L"DSN=%s\n", wszDsn);
|
|
CoTaskMemFree(wszDsn);
|
|
VSS_PWSZ wszRoot = sites.GetSiteRoot(iSite);
|
|
wprintf(L"Root=%s\n", wszRoot);
|
|
CoTaskMemFree(wszRoot);
|
|
|
|
VSS_PWSZ wszRoles = sites.GetSiteRoles(iSite);
|
|
wprintf(L"Roles = %s\n", wszRoles);
|
|
CoTaskMemFree(wszRoles);
|
|
wprintf(L"\n\n");
|
|
}
|
|
}
|
|
|
|
void LockSite(LPCWSTR wszSiteId, LPCWSTR wszSleep)
|
|
{
|
|
DWORD siteId = _wtoi(wszSiteId);
|
|
DWORD secs = _wtoi(wszSleep);
|
|
|
|
CSTSSites sites;
|
|
InitializeSites(sites);
|
|
DWORD cSites = sites.GetSiteCount();
|
|
for(DWORD iSite = 0; iSite < cSites; iSite++)
|
|
{
|
|
if (sites.GetSiteId(iSite) == siteId)
|
|
break;
|
|
}
|
|
|
|
if (iSite >= cSites)
|
|
{
|
|
wprintf(L"invalid site id %d.\n", siteId);
|
|
throw E_INVALIDARG;
|
|
}
|
|
|
|
sites.LockSiteContents(iSite);
|
|
wprintf(L"site %d locked for %d seconds.\n", siteId, secs);
|
|
Sleep(secs * 1000);
|
|
sites.UnlockSites();
|
|
}
|
|
|
|
extern "C" __cdecl wmain(int argc, WCHAR **argv)
|
|
{
|
|
bool bCoInitializeSucceeded = false;
|
|
|
|
try
|
|
{
|
|
HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
if (FAILED(hr))
|
|
{
|
|
wprintf(L"CoInitializeEx failed with hr=0x%08lx.\n", hr);
|
|
throw(hr);
|
|
}
|
|
|
|
bCoInitializeSucceeded = TRUE;
|
|
|
|
if (argc < 2 || argc > 4)
|
|
{
|
|
Usage();
|
|
throw E_INVALIDARG;
|
|
}
|
|
|
|
if (_wcsicmp(argv[1], L"list") == 0 && argc == 2)
|
|
ListSites();
|
|
|
|
else if (_wcsicmp(argv[1], L"lock") == 0 && argc == 4)
|
|
LockSite(argv[2], argv[3]);
|
|
else
|
|
{
|
|
Usage();
|
|
throw E_INVALIDARG;
|
|
}
|
|
}
|
|
catch(HRESULT)
|
|
{
|
|
}
|
|
catch(...)
|
|
{
|
|
wprintf(L"Unexpected exception!!!\n");
|
|
}
|
|
|
|
if (bCoInitializeSucceeded)
|
|
CoUninitialize();
|
|
|
|
return 0;
|
|
}
|
|
|
|
|