windows-nt/Source/XPSP1/NT/printscan/fax/setup/ocm/uninstal.cpp
2020-09-26 16:20:57 +08:00

112 lines
2.1 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
uninstal.c
Abstract:
This file implements the un-install case.
Environment:
WIN32 User Mode
Author:
Wesley Witt (wesw) 17-Feb-1996
--*/
#include "faxocm.h"
#pragma hdrstop
DWORD
DoUninstall(
VOID
)
{
DWORD ErrorCode = 0;
HKEY hKey;
HKEY hKeyDevice;
DWORD RegSize;
DWORD RegType;
LONG rVal;
DWORD i = 0;
WCHAR Buffer[MAX_PATH*2];
//
// kill the clients dir
//
wcscpy( Buffer, Platforms[0].DriverDir );
RemoveLastNode( Buffer );
wcscat( Buffer, FAXCLIENTS_DIR );
DeleteDirectoryTree( Buffer );
//
// kill the fax receieve dir(s)
//
rVal = RegOpenKey( HKEY_LOCAL_MACHINE, REGKEY_FAX_DEVICES, &hKey );
if (rVal == ERROR_SUCCESS) {
while (RegEnumKey( hKey, i++, Buffer, sizeof(Buffer)/sizeof(WCHAR) ) == ERROR_SUCCESS) {
wcscat( Buffer, L"\\" );
wcscat( Buffer, REGKEY_ROUTING );
rVal = RegOpenKey( hKey, Buffer, &hKeyDevice );
if (rVal == ERROR_SUCCESS) {
RegSize = sizeof(Buffer);
rVal = RegQueryValueEx(
hKeyDevice,
REGVAL_ROUTING_DIR,
0,
&RegType,
(LPBYTE) Buffer,
&RegSize
);
if (rVal == ERROR_SUCCESS) {
DeleteDirectoryTree( Buffer );
}
RegCloseKey( hKeyDevice );
}
}
RegCloseKey( hKey );
}
//
// clean out the registry
//
SetProgress( IDS_DELETING_REGISTRY );
DeleteFaxRegistryData();
//
// remove the fax service
//
SetProgress( IDS_DELETING_FAX_SERVICE );
MyDeleteService( L"Fax" );
//
// remove the program groups
//
SetProgress( IDS_DELETING_GROUPS );
DeleteGroupItems();
DeleteFaxMsgServices();
if (InstallType & FAX_INSTALL_SERVER) {
DeleteNetworkShare( FAXCLIENTS_DIR );
}
return TRUE;
}