226 lines
4.9 KiB
C++
226 lines
4.9 KiB
C++
//____________________________________________________________________________
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1995 - 1996.
|
|
//
|
|
// File: viewlog.cxx
|
|
//
|
|
// Contents:
|
|
//
|
|
// Classes:
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: 3/25/1996 RaviR Created
|
|
//
|
|
//____________________________________________________________________________
|
|
|
|
#include "..\pch\headers.hxx"
|
|
#pragma hdrstop
|
|
|
|
#include "dbg.h"
|
|
#include "macros.h"
|
|
|
|
#include "..\inc\common.hxx"
|
|
#include "..\inc\resource.h"
|
|
#include "..\inc\misc.hxx"
|
|
#include "resource.h"
|
|
|
|
extern HINSTANCE g_hInstance;
|
|
|
|
|
|
LRESULT
|
|
OnViewLog_RegGetValue(
|
|
HKEY hKeyMachine,
|
|
LPCTSTR pszValueName,
|
|
LPTSTR pszValueStr);
|
|
|
|
|
|
#define SUBKEY_LOGPATH TEXT("LogPath")
|
|
|
|
|
|
#ifdef UNICODE
|
|
#define FMT_TSTR "%S"
|
|
#else
|
|
#define FMT_TSTR "%s"
|
|
#endif
|
|
|
|
|
|
//____________________________________________________________________________
|
|
//
|
|
// Function: OnViewLog
|
|
//
|
|
// Synopsis: Open the job sheduler log.
|
|
//
|
|
// Arguments: [hwndOwner] -- IN
|
|
//
|
|
// Returns: void
|
|
//
|
|
// History: 3/25/1996 RaviR Created
|
|
//
|
|
//____________________________________________________________________________
|
|
|
|
void
|
|
OnViewLog(
|
|
LPTSTR lpMachineName,
|
|
HWND hwndOwner)
|
|
{
|
|
TCHAR tszLogPath[MAX_PATH + 1];
|
|
ULONG ulTemp;
|
|
HKEY hKeyMachine = HKEY_LOCAL_MACHINE;
|
|
LRESULT lr = 0;
|
|
|
|
if (lpMachineName != NULL)
|
|
{
|
|
lr = RegConnectRegistry(lpMachineName, HKEY_LOCAL_MACHINE,
|
|
&hKeyMachine);
|
|
if (lr != ERROR_SUCCESS)
|
|
{
|
|
CHECK_LASTERROR(lr);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Get the log file name.
|
|
//
|
|
|
|
lr = OnViewLog_RegGetValue(hKeyMachine, SUBKEY_LOGPATH, tszLogPath);
|
|
|
|
RegCloseKey(hKeyMachine);
|
|
|
|
if (lr == ERROR_SUCCESS)
|
|
{
|
|
if (lpMachineName != NULL)
|
|
{
|
|
// If path is drive based convert it to share based.
|
|
if (s_isDriveLetter(tszLogPath[0]) && tszLogPath[1] == TEXT(':'))
|
|
{
|
|
TCHAR tszBuf[MAX_PATH + 1];
|
|
|
|
lstrcpy(tszBuf, tszLogPath);
|
|
tszBuf[1] = TEXT('$');
|
|
|
|
if (lpMachineName[0] == TEXT('\\'))
|
|
{
|
|
Win4Assert(lpMachineName[1] == TEXT('\\'));
|
|
tszLogPath[0] = TEXT('\0');
|
|
}
|
|
else
|
|
{
|
|
lstrcpy(tszLogPath, TEXT("\\\\"));
|
|
}
|
|
|
|
lstrcat(tszLogPath, lpMachineName);
|
|
lstrcat(tszLogPath, TEXT("\\"));
|
|
lstrcat(tszLogPath, tszBuf);
|
|
|
|
DEBUG_OUT((DEB_USER1, "Viewing log -> " FMT_TSTR "\n", tszLogPath));
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (lpMachineName == NULL)
|
|
{
|
|
CHECK_LASTERROR(lr);
|
|
return;
|
|
}
|
|
|
|
ulTemp = ExpandEnvironmentStrings(TSZ_LOG_NAME_DEFAULT,
|
|
tszLogPath, MAX_PATH);
|
|
|
|
if (ulTemp == 0)
|
|
{
|
|
DEBUG_OUT_LASTERROR;
|
|
return;
|
|
}
|
|
|
|
if (ulTemp > MAX_PATH)
|
|
{
|
|
CHECK_LASTERROR(ERROR_INSUFFICIENT_BUFFER);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Create a process to open the log.
|
|
//
|
|
|
|
HINSTANCE hinst = ShellExecute(0, TEXT("open"), tszLogPath, 0, 0, SW_SHOW);
|
|
|
|
if ((INT_PTR)hinst <= 32)
|
|
{
|
|
DEBUG_OUT((DEB_ERROR, " returned %dL\n", hinst));
|
|
}
|
|
}
|
|
|
|
|
|
//____________________________________________________________________________
|
|
//
|
|
// Function: OnViewLog_RegGetValue
|
|
//
|
|
// Synopsis: S
|
|
//
|
|
// Arguments: [pszValueName] -- IN
|
|
// [pszValueStr] -- IN
|
|
//
|
|
// Returns: LRESULT
|
|
//
|
|
// History: 3/25/1996 RaviR Created
|
|
//
|
|
//____________________________________________________________________________
|
|
|
|
LRESULT
|
|
OnViewLog_RegGetValue(
|
|
HKEY hKeyMachine,
|
|
LPCTSTR pszValueName,
|
|
LPTSTR pszValueStr)
|
|
{
|
|
HKEY hKey = NULL;
|
|
LRESULT lr = ERROR_SUCCESS;
|
|
|
|
//
|
|
// Read the log path and maximum size from the registry.
|
|
//
|
|
|
|
lr = RegOpenKeyEx(hKeyMachine, SCH_AGENT_KEY, 0, KEY_READ, &hKey);
|
|
|
|
if (lr == ERROR_SUCCESS)
|
|
{
|
|
TCHAR szBuff[MAX_PATH];
|
|
DWORD dwTemp = MAX_PATH * sizeof(TCHAR);
|
|
DWORD dwType;
|
|
|
|
lr = RegQueryValueEx(hKey, pszValueName, 0, &dwType,
|
|
(UCHAR *)szBuff, &dwTemp);
|
|
|
|
if (lr == ERROR_SUCCESS)
|
|
{
|
|
switch (dwType)
|
|
{
|
|
case REG_SZ:
|
|
CopyMemory(pszValueStr, szBuff, dwTemp);
|
|
break;
|
|
|
|
case REG_EXPAND_SZ:
|
|
dwTemp = ExpandEnvironmentStrings(szBuff, pszValueStr,
|
|
MAX_PATH);
|
|
if (dwTemp > MAX_PATH)
|
|
{
|
|
lr = ERROR_INSUFFICIENT_BUFFER;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
RegCloseKey(hKey);
|
|
}
|
|
|
|
return lr;
|
|
}
|
|
|
|
|
|
|
|
|