Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
parseinf.h
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 7k
Category:
Windows Kernel
Development Platform:
Visual C++
- ///////////////////////////////////////////////////////////////////////////////
- // Declaration of class CParseInf
- //
- // One instance of this class is created for each OCX being removed. It stores
- // all the files associated with the OCX in a linked list. It also does the
- // jobs of determining if the OCX is uninstallable and of the actual file
- // removal.
- #ifndef __PARSE_INF__
- #define __PARSE_INF__
- #include "filenode.h"
- #include <pkgmgr.h>
- #define REGSTR_COM_BRANCH "CLSID"
- #define REGSTR_DOWNLOAD_INFORMATION "DownloadInformation"
- #define REGSTR_DLINFO_INF_FILE "INF"
- #define REGSTR_DLINFO_CODEBASE "CODEBASE"
- #define REGSTR_PATH_DIST_UNITS "Software\Microsoft\Code Store Database\Distribution Units"
- #define REGSTR_DU_CONTAINS_FILES "Contains\Files"
- #define REGSTR_DU_CONTAINS_JAVA "Contains\Java"
- #define REGSTR_DU_CONTAINS_DIST_UNITS "Contains\Distribution Units"
- #define REGSTR_VALUE_INF "INF"
- #define REGSTR_VALUE_OSD "OSD"
- #define REGSTR_INSTALLED_VERSION "InstalledVersion"
- #define REGSTR_VALUE_EXPIRE "Expire"
- #define REGSTR_SHOW_ALL_FILES "ShowAllFiles"
- #define MAX_REGPATH_LEN 2048
- #define MAX_CONTROL_NAME_LEN 1024
- #define MAX_MSGBOX_STRING_LEN 2048
- #define MAX_MSGBOX_TITLE_LEN 256
- #define BYTES_MAXSIZE 32
- BOOL IsShowAllFilesEnabled();
- void ToggleShowAllFiles();
- class CParseInf
- {
- // Construction
- public:
- CParseInf();
- ~CParseInf();
- // Data members
- protected:
- DWORD m_dwTotalFileSize;
- DWORD m_dwFileSizeSaved;
- DWORD m_dwStatus; // status value from the STATUS_CTRL set in <cleanoc.h>
- int m_nTotalFiles;
- CFileNode *m_pHeadFileList;
- CFileNode *m_pCurFileNode;
- CFileNode *m_pFileRetrievalPtr;
- CPackageNode *m_pHeadPackageList;
- CPackageNode *m_pCurPackageNode;
- CPackageNode *m_pPackageRetrievalPtr;
- TCHAR m_szInf[MAX_PATH];
- TCHAR m_szFileName[MAX_PATH];
- TCHAR m_szCLSID[MAX_CLSID_LEN];
- BOOL m_bIsDistUnit;
- BOOL m_bHasActiveX;
- BOOL m_bHasJava;
- IJavaPackageManager *m_pijpm;
- BOOL m_bCoInit;
- ULONG m_cExpireDays;
- // Operations
- public:
- virtual HRESULT DoParse(
- LPCTSTR szOCXFileName,
- LPCTSTR szCLSID);
- virtual HRESULT RemoveFiles(
- LPCTSTR lpszTypeLibID = NULL,
- BOOL bForceRemove = FALSE,
- DWORD dwIsDistUnit = FALSE,
- BOOL bSilent=FALSE);
- virtual DWORD GetTotalFileSize() const;
- virtual DWORD GetTotalSizeSaved() const;
- virtual int GetTotalFiles() const;
- virtual CFileNode* GetFirstFile();
- virtual CFileNode* GetNextFile();
- virtual CPackageNode* GetFirstPackage();
- virtual CPackageNode* GetNextPackage();
- virtual HRESULT DoParseDU(LPCTSTR szOCXFileName, LPCTSTR szCLSID);
- virtual void SetIsDistUnit(BOOL bDist);
- virtual BOOL GetIsDistUnit() const;
- virtual DWORD GetStatus() const;
- virtual BOOL GetHasActiveX(void) { return m_bHasActiveX; };
- virtual BOOL GetHasJava(void) { return m_bHasJava; };
- virtual ULONG GetExpireDays(void) { return m_cExpireDays; }
- // private helper methods
- protected:
- void Init();
- void DestroyFileList();
- void DestroyPackageList();
- HRESULT FindInf(LPTSTR szInf);
- HRESULT EnumSections();
- BOOL IsSectionInINF( LPCSTR lpCurCode);
- HRESULT HandleSatellites(LPCTSTR pszFileName);
- HRESULT GetFilePath(CFileNode* pFileNode);
- HRESULT ParseSetupHook();
- HRESULT ParseConditionalHook();
- HRESULT ParseUninstallSection(LPCTSTR lpszSection);
- HRESULT BuildDUFileList( HKEY hKeyDU );
- HRESULT BuildDUPackageList( HKEY hKeyDU );
- HRESULT BuildNamespacePackageList( HKEY hKeyNS, LPCTSTR szNamespace );
- HRESULT CheckFilesRemovability(void);
- HRESULT CheckLegacyRemovability( LONG *cOldSharedCount);
- HRESULT CheckDURemovability( HKEY hkeyDU, BOOL bSilent=FALSE );
- HRESULT RemoveLegacyControl( LPCTSTR lpszTypeLibID, BOOL bSilent=FALSE );
- HRESULT RemoveDU( LPTSTR szFullName, LPCTSTR lpszTypeLibID, HKEY hkeyDUDB, BOOL bSilent=FALSE );
- HRESULT CheckDUDependencies(HKEY hKeyDUDB, BOOL bSilent=FALSE);
- };
- ///////////////////////////////////////////////////////////////////////////////
- // Structure storing information about an ActiveX control.
- //
- // szName -- descriptive name of control (eg. "Circle control")
- // szFile -- full filename of the control
- // (eg. "C:WINDOWSOCCACHECIRC3.INF")
- // szCLSID -- CLSID of control, in a string
- // szTypeLibID -- TypeLib ID of the control, in a string
- // dwTotalFileSize -- total size in bytes of all control-related files
- // dwTotalSizeSaved -- total size in bytes restored when the control is removed
- // cTotalFiles -- total number of control-related files, including the
- // control itself
- // parseInf -- pointer to an instance of class CParseInf, which does
- // all the jobs of parsing the inf file and removing the
- // control. Users of this struct should not in anyway
- // manipulate this pointer.
- //
- class CCacheItem : public CParseInf
- {
- public:
- TCHAR m_szName[LENGTH_NAME];
- TCHAR m_szFile[MAX_PATH];
- TCHAR m_szCLSID[MAX_DIST_UNIT_NAME_LEN];
- TCHAR m_szTypeLibID[MAX_CLSID_LEN];
- TCHAR m_szCodeBase[INTERNET_MAX_URL_LENGTH];
- TCHAR m_szVersion[VERSION_MAXSIZE];
- CCacheItem(void) {};
- virtual ~CCacheItem(void) {};
- virtual DWORD ItemType(void) const = 0;
- };
- class CCacheLegacyControl : public CCacheItem
- {
- public:
- CCacheLegacyControl(void) {};
- virtual ~CCacheLegacyControl(void) {};
- static DWORD s_dwType;
- virtual DWORD ItemType(void) const { return s_dwType; };
- virtual HRESULT Init( HKEY hkeyCLSID, LPCTSTR szFile, LPCTSTR szCLSID );
- };
- class CCacheDistUnit : public CCacheLegacyControl
- {
- public:
- CCacheDistUnit(void) {};
- virtual ~CCacheDistUnit() {};
- static DWORD s_dwType;
- virtual DWORD ItemType(void) const { return s_dwType; };
- virtual HRESULT Init( HKEY hkeyCLSID, LPCTSTR szFile, LPCTSTR szCLSID, HKEY hkeyDist, LPCTSTR szDU );
- // override this - we'll do this work when we DoParseDU
- virtual HRESULT DoParse( LPCTSTR szOCXFileName, LPCTSTR szCLSID ) { return S_OK; };
- };
- #endif