Leaked source code of windows server 2003
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.

1405 lines
54 KiB

  1. /*++
  2. Copyright (c) 1998 Microsoft Corporation
  3. Module Name:
  4. memdbdef.h
  5. Abstract:
  6. Defines the memdb categories for the Win9x upgrade project.
  7. All information that is transferred to the NT side of setup
  8. is placed in a memdb category. The comments below document
  9. each category used.
  10. Authors:
  11. Jim Schmidt (jimschm) 16-Dec-1996
  12. Revision History:
  13. Many changes - see SLM log
  14. --*/
  15. #pragma once
  16. /*
  17. MemDb Structure
  18. MemDb is a binary tree structure that the migration code uses to save
  19. instructions, lists, account information, and so on. The stored information
  20. is combined into a path form, and the path can have an optional DWORD
  21. associated with it.
  22. A generalized structure of all data that we store in memdb can be
  23. expressed as:
  24. <category>\<item>\<field>\<data>=<val>
  25. category - A hard-coded category, a MEMDB_CATEGORY constant
  26. item - An item may be:
  27. 1. A runtime-defined string
  28. 2. A runtime-generated enumeration string
  29. 3. A hard-coded string (rare)
  30. 4. Unused
  31. field - Usually a hard-coded field related to item. The field
  32. is used to match several lines of data with a single item.
  33. In some cases, field is not used.
  34. data - The string-based data that needs to be stored.
  35. val - A DWORD associated with <data>. Often this value is
  36. not used and is zero.
  37. In general, if a field for an item is missing, the field is considered
  38. empty.
  39. Because memdb is internally a binary tree, all pieces of a path are sorted.
  40. A frequent use of this characteristic is to make enumerators that are numeric
  41. strings with zero leaders (001, 002, etc). Such enumerators maintain order
  42. of items.
  43. -----
  44. The following categories are defined:
  45. HKR\<regpath> = <flags>
  46. HKR is used to suppress migration of a registry key in a user's hive.
  47. This is used primarily by usermig.inf's SuppressValue rule.
  48. regpath - The path to a registry key, and an optional value appended
  49. in brackets (HKR\key [val]).
  50. flags - Specifies the merge flags for the key. See regops.h.
  51. HKLM\<regpath> = <flags>
  52. HKLM is used to suppress migration of a registry key in a the system's hive.
  53. This is used primarily by wkstamig.inf's SuppressValue rule.
  54. regpath - The path to a registry key, and an optional value appended
  55. in brackets (HKR\key [val]).
  56. flags - Specifies the merge flags for the key. See regops.h.
  57. FileEnumExcl\<hex-val>\<Paths|Files>\<path>
  58. FileEnumExcl is used to exclude files or paths from file enumeration
  59. in fileenum.lib.
  60. hex-val - The hex representation of the exclusion group DWORD
  61. Paths|Files - Paths if <path> represents a path pattern to exclude
  62. Files if <path> represents a file pattern to exclude
  63. See FileEnum source for more information.
  64. LinkEdit
  65. OPERATION_LINK_EDIT holds all info for editing a LNK or PIF file
  66. on NT side (or for creating a new LNK file as special case for
  67. converting PIFs to command.com)
  68. LinkStrings\<path>
  69. LinkStrings holds a list of link files that have command lines with
  70. GUID arguments. See LinkGuids below.
  71. path - Specifies the .LNK path in long format
  72. LinkGuids\<guid>\<seq> = <offset>
  73. LinkGuids holds a list of GUIDs which is used in one or more .LNK
  74. command line arguments.
  75. guid - Specifies the GUID extracted from the .LNK command line arguments
  76. seq - A numerical sequencer used to allow a one-to-many mapping
  77. offset - The offset of a LinkStrings entry
  78. AdministratorInfo\account\<name>
  79. AdministratorInfo holds information describing the details necessary to
  80. migrate the NT administrator account.
  81. account - This item designates the Win9x account for the administrator.
  82. If the account item is missing, the default Win9x account is used.
  83. The account name is the fixed user name.
  84. UserDatLoc\<user>\<path> = <create only>
  85. UserDatLoc is used to track the location of each user's user.dat
  86. file. It is used by migmain to load up a user's hive, and also
  87. to suppress processing of a user. If an entry is not given for
  88. a particular user (including Administrator and the default user),
  89. the user will not be migrated.
  90. user - The fixed user name matched with the path
  91. path - The full RELOCATED path to user.dat for the user, in
  92. %windir%\setup\temp
  93. create only - Specifies 1 if this account is only for creation
  94. (i.e., Administrator), or 0 for full migration.
  95. FixedUserNames\<orgname-encoded>\<newname>
  96. FixedUserNames maps the original name of a user to the new name,
  97. if the original name was incompatible with NT.
  98. orgname-encoded - Specifies the original user name, encoded with
  99. MemDbMakeNonPrintableKey
  100. newname - Specifies the new user name that is compatible with
  101. NT
  102. UserProfileExt\<user>\<ext>
  103. If a Win9x profile path has an extension on it, the extension
  104. is written to UserProfileExt. Setup preserves the extension
  105. by appending it to the new profile path it creates.
  106. user - The fixed Win9x user name matched with the extension
  107. ext - The exact name of the user's profile folder, such as
  108. joeblow.001
  109. If an entry does not exist, then the fixed user name is used as
  110. the profile directory name.
  111. FileRename\<srcname>\<newname>
  112. FileRename holds a master list of all files on Win9x that are renamed
  113. during upgrade. This list can only contain file names that can
  114. be located by the SearchPath API on Win9x. During the upgrade,
  115. all registry references to the specific file are updated to use
  116. the new name.
  117. srcname - Specifies the file name that exists on Win9x
  118. newname - Specifies the new name of the file that has the same
  119. functionality on Win9x but has a different name.
  120. MigDll\<item>\<field>\<path>
  121. MigDll is used to pass a list of migration DLLs from Win95 to NT.
  122. All DLLs in the MigDll category are loaded and executed in GUI
  123. mode setup.
  124. item - A numeric enumerator
  125. field - DLL: <path> gives the path to the migration DLL
  126. WD: <path> gives the working directory for the DLL
  127. DESC: <path> gives a text description, truncated to MAX_PATH
  128. characters.
  129. path - The DLL path, working directory or description.
  130. SIF Restrictions\section\pattern
  131. This section describes the sections and keys in the unattend file
  132. that migration dlls are not allowed to use. It is pattern based so,
  133. for example, MassStorageDrivers=* would indicate that no migration
  134. dll can create any key in the MassStorageDrivers section of the
  135. unattend file.
  136. section - a section. May not contain a pattern.
  137. pattern - a key pattern.
  138. SIF Values\value
  139. The values used by buildinf.
  140. SIF Sections\Section\Key Sequence\Value Sequence
  141. This section holds all of the sections and keys of an answer file.
  142. section - the section within an answer file
  143. Key sequence - a stringified 7 digit number that maintains order between keys
  144. in a section. The associated value with this key is the offset
  145. into the keys section where the key text is located.
  146. Value sequence - a stringified 7 digit number that maintains order between values in
  147. a section. The associated value with this okey is the offset
  148. into the Answer File Values section where the value is located.
  149. Ras Migration Data for <User>\Entry\Item\Data
  150. This section holds information for migrating phone book entrys of users.
  151. User - the fixed user name of the user this refers to..
  152. Entry - The Phone book entry name
  153. Item - The win95 item name
  154. data - the data of that item.
  155. NetShares\<share>\<field>\<data>
  156. NetShares is used to hold all Win95 share information as extracted
  157. by NetShareEnum. All details are specified for the share, although
  158. not all of them may be supported.
  159. share - The share name as configured in Win95
  160. field - Path: <data> specifies the path to share
  161. Remark: <data> specifies a user-defined remark
  162. ACL: <data> specifies one or more users, and the
  163. entire key's value is set to the permission
  164. flags for the user.
  165. ROP: <data> specifies a read-only password
  166. RWP: <data> specifies a full-access password
  167. data - The path, remark, ACL user list, or password
  168. Note that NetShares\<share> is also used. The value of this key
  169. is set to the type of access permitted (ACL-defined, password-
  170. defined, etc.) with a special flag of SHI50F_ACLS (defined
  171. in memdb.h).
  172. UserPassword\<user>\<password>
  173. If <user> is a local account, The account will be created with <password>.
  174. user - Specifies the fixed Win9x user name
  175. password - Specifies the password, which may contain a backslash, asterisk or
  176. question mark.
  177. DOSMIG SUMMARY\<item>\<field>\<data>
  178. Dosmig Summary is used to maintain summary information about the progress of
  179. migrating the dos configuration files config.sys and autoexec.bat.
  180. Item is either BAD, IGNORE, MIGRATE, USE, or UNKNOWN (referring to the type of
  181. classifications dosmig95 uses as it reads through the DOS configuration files) or
  182. LINES (referring to the total line count found.)
  183. The only currently supported field under this category is COUNT
  184. data contains a count of whatever the item field was, as a string.
  185. DOSMIG LINES\<item>\<field>\<data>
  186. The Dosmig lines category is used to hold information about the actual lines of
  187. the configuration fields.
  188. Item is a 5 digit enumerator string.
  189. Fields are one of the following:
  190. TYPE -- The type of the line
  191. TEXT -- The actual text of the line.
  192. DESC -- A description associated with the line by dosmig95's parse rules
  193. FILE -- either autoexec.bat or config.sys depending on where the line originated.
  194. The data is the type,text,description or file, as necessary.
  195. GUIDS\<guid>
  196. The GUIDS category holds a list of all suppressed GUIDs for OLE. Each
  197. GUID in the list exists in the Win95 registry. The actual list of
  198. suppressed GUIDs (both those that are in the registry and those that
  199. are not) is kept in win95upg.inf.
  200. AutosearchDomain\<user>
  201. The AutosearchDomain category holds a list of users who are marked for
  202. automatic domain lookup during GUI mode. If one or more users are listed
  203. in AutosearchDomain, Setup checks all trusted domains for the specified
  204. user accounts, resolving them automatically.
  205. user - Specifies the fixed user name, without a domain
  206. KnownDomain\<domain>\<user>
  207. The KnownDomain category holds a list of users whos domain is known but
  208. needs to be verified. This domain comes from network shares, the most
  209. recent logged on user, and the UI.
  210. domain - Specifies the domain name, such as REDMOND
  211. user - Specifies the fixed user name
  212. State\<data>=value
  213. A category used for misc state passing. Data is one of the following:
  214. MSNP32 - If exists, the Microsoft Networking Client was installed
  215. PlatformName\<name> - Specifies the display name of Win95 or Win98
  216. MajorVersion = <DWORD> - Specifies Win9x major version
  217. MinorVersion = <DWORD> - Specifies Win9x minor version
  218. BuildNumber = <DWORD> - Specifies Win9x build number
  219. PlatformId = <DWORD> - Specifies platform ID flags
  220. VersionText - Specifies arbitrary version text
  221. CodePage = <DWORD> - Specifies Win9x code page
  222. Locale = <DWORD> - Specifies Win9x locale id
  223. AP\<password> = <DWORD> - Specifies the admin password and if it was
  224. randomly generated or not
  225. NtFiles\<filename> = <pathoffset>
  226. The NtFiles category is used to hold a list of filenames that are
  227. installed by standard NT installation. This list comes from txtsetup.sif
  228. and does not have a directory spec.
  229. filename - The file that will be installed, in long filename format
  230. pathoffset - Specifies offset to NtPaths key for file
  231. NtFilesExcept\<filename>
  232. These are files installed by NT that don't have no overwrite restriction
  233. filename - The file name, in long filename format
  234. MyDocsMoveWarning\<user>\<path>
  235. Specifies paths to copy the shell "where are my documents"
  236. warning file.
  237. user - Specifies the fixed user name
  238. path - Specifies the path. On 9x, this is the symbolic shell
  239. folder location. On NT, this is fixed up to be the
  240. actual path.
  241. NtFilesRemoved\<filename> = <pathoffset>
  242. These are files removed by NT
  243. filename - The file name, in long filename format
  244. pathoffset - Specifies offset to NtPaths key for file
  245. NtPaths\<path>
  246. Specifies the path for a file listed in NtFiles.
  247. path - The path specification in long filename format
  248. NtFilesBad\<filename> = <pathoffset>
  249. This category is used to hold the files that are supposed to be installed by
  250. NT but never made it.
  251. filename - The file that should have been installed, in long filename format
  252. pathoffset - Specifies offset to NtPaths key for file
  253. Stf\<path>
  254. Specifies the name of a setup table file that needs to be converted.
  255. .STF files are used by the old Microsoft ACME setup. We convert any
  256. path that has been moved.
  257. path - The path specification in long filename format
  258. StfTemp\<path> = <inf pointer>
  259. Used during STF processing in the migraiton phase to organize data.
  260. path - The path specification in long filename format, taken from the
  261. STF/INF pair
  262. inf pointer - A pointer to an INFLINE structure (see migmain\stf.c)
  263. StfSections\<path> = <section number>
  264. Used during STF processing in the migraiton phase to organize sections.
  265. path - The dir portion of an STF path; files in the STF section must all
  266. be in this directory.
  267. section number - The 32-bit section number. When combined with win9xupg,
  268. this number gives a unique section name.
  269. HelpFilesDll\<dllname>
  270. Specifies the extension DLL needed by a certain help file. Used to
  271. verify if the help file and the DLL are going to be loaded in
  272. the same subsystem in NT.
  273. Report\<category> = Item (temporary category)
  274. category - Specifies the category, which may contain backslashes. This
  275. is the same category that is stored in msgmgr.
  276. Item - Specifies a pointer to the incompatibility message item
  277. UserSuppliedDrivers\<infname>\<local_driver_path>
  278. Specifies the INF of user-supplied hardware drivers and the
  279. location of the associated driver files.
  280. infname - Specifies INF to be installed
  281. local_driver_path - Specifies local path containing all driver files
  282. DisabledMigDlls\<productid>
  283. Specifies that a registry-specified migration DLL is disabled and
  284. will not be processed.
  285. productid - The migration DLL's product ID; the value name stored in
  286. the registry and used for display.
  287. MissingImports\<missing import sample>
  288. Specifies a sample of a missing import for a certain module.
  289. MissingImports = the full path for the module
  290. missing import sample = is a sample for a missing import
  291. ModuleCheck\<full path module name>=<status value>
  292. Specifies a list of modules and their status.
  293. full path module name = self explanatory
  294. status value = MODULESTATUS_xxx constant defined in fileops.h
  295. HardwareIdList\<enum key entry>\<hardware Id list>
  296. Specifies a list of hardware Id's and compatible id's for specified enum key entry
  297. NewNames\<name group>\<field>\<name> = <value> (**intended to be used on the Win9x-side only)
  298. Specifies a name collision resolution, used to correct names that are
  299. incompatible with NT.
  300. name group - Specifies the type of name, such as Computer Name, User Names, etc...
  301. field - Old: <name> specifies the Win9x name
  302. New: <name> specifies the NT-compatible name, either generated by Setup
  303. or specified by the user
  304. name - Specifies the name text
  305. value - If <field> is Old, specifies offset to new name (i.e, the New field's data)
  306. InUseNames\<name group>\<name> (**intended to be used on the Win9x-side only)
  307. Specifies names that are in use. Used to make sure the user doesn't try to name
  308. two things to the same name.
  309. name group - Specifies the type of name, such as Computer Name, User Names, etc...
  310. name - Specifies the name that is in use
  311. DeferredAnnounce\<full path module name> = Offset
  312. If any of the files listed here have a link or pif pointing to them then we will
  313. announce the file using implicit values or MigDbContext (Offset is a pointer to this).
  314. UserFlags are used to identify the type of the file that can be one of the following:
  315. Reinstall
  316. MinorProblems
  317. Incompatible
  318. KnownGood\<full path module name>
  319. We record here all known good files found in the system.
  320. CompatibleShellModules\<full path module name> = Offset
  321. We list here all known good modules for Shell= line in Win.ini.
  322. When we will process this line we will check to see if modules listed there are
  323. "known good". If not we will either delete the entry or replace the module with a
  324. compatible one. Offset points to a MigDbContext or is NULL.
  325. CompatibleShellModulesNT\<full path module name>
  326. This is the part from CompatibleShellModules that actually goes to NT.
  327. CompatibleRunKeyModules\<full path module name> = Offset
  328. We list here all known good modules for Run key.
  329. When we will process this key we will check to see if modules listed there are
  330. "known good". If not we will either delete the entry or replace the module with a
  331. compatible one. Offset points to a MigDbContext or is NULL.
  332. CompatibleRunKeyModulesNT\<value name>
  333. This is the part from CompatibleRunKeyModules that actually goes to NT.
  334. IncompatibleRunKeyModulesNT\<value name>
  335. This lists the Run key value names that are known bad.
  336. CompatibleDosModules\<full path module name> = Offset
  337. We list here all known good Dos modules.
  338. CompatibleDosModulesNT\<full path module name>
  339. This is the part from CompatibleDosModules that actually goes to NT.
  340. CompatibleHlpFiles\<full path module name> = Offset
  341. We list here all known good HLP files.
  342. CompatibleHlpExtensions\<extension module>
  343. We list here HLP files extension modules that we know are going to work
  344. Shortcuts\<full path shortcut file name>
  345. Shortcuts stored here for further processing
  346. UninstallSection\<migdb section>
  347. Specifies a section name that needs to be processed. This key is temporary and
  348. is generated during the file scan and deleted at the end of the file scan during
  349. the report phase.
  350. migdb section - Specifies the section name text, as specified by an arg in migdb.inf
  351. CleanUpDir\<path>
  352. Specifies a directory that should be deleted if it is empty
  353. path - Specifies the root path. The subdirs are scaned as well.
  354. Win9x APIs\<DLL>\<api>
  355. Lists APIs that are supported only on Win9x.
  356. DLL - Specifies the DLL file name, such as kernel32.dll
  357. api - Specifies the API in the DLL
  358. Network Adapters\<Adapter Section>\<Protocol>= <NetTransOffset>
  359. Network Adapters\<Adapter Section>\<PnPId>
  360. NetTransKeys\<NetTransKey>
  361. Lists all Net Adapters on the system and the associated protocol bindings.
  362. Adapter Section - Specifies the Adapter Section that will be created in the answer file for
  363. this item (such as [Adapter1])
  364. Protocol - Under each adapter, each bound protocol is listed.
  365. PnPId - The base PNPID for the device.
  366. NetTransOffset An Offset into the NetTransKeys section.
  367. Icons\<path>\<seq> = offset, seq
  368. Lists extracted icons.
  369. <path> - Specifies the Win9x source file path (c:\windows\notepad.exe for example)
  370. <seq> - Specifies the sequential icon index in <path>, zero-based
  371. offset - Specifies the file position within the icon data file where the image is
  372. seq - Specifies the sequential icon index in migicons.exe, zero-based
  373. IconsMoved\<path>\<seq> = offset, seq
  374. Lists moved icons.
  375. <path> - Specifies the Win9x source file path (c:\windows\notepad.exe for example)
  376. <seq> - Specifies the sequential icon index in <path>, zero-based
  377. offset - Specifies the memdb key offset to the new OS file (Win9x path)
  378. seq - Specifies the sequential icon index in the new OS file, zero-based
  379. NicePaths\<path>=MessageId
  380. Lists paths that should be translated in user report using the message ID.
  381. path - Specifies the path
  382. MessageId - Specifies the message ID
  383. MigrationPaths\<path>
  384. Lists paths that are considered "ours". The deal is that if we find OSFiles in these paths, we delete them, otherwise
  385. we just mark them for external deletion.
  386. path - Specifies the path
  387. ReportLinks\<ReportEntry>\<Category>
  388. SuppressIniMappings\<suppressed path>
  389. Lists all INI settings that are not going to be mapped into registry
  390. suppressed path = <INI file>\<section name>\<key name>
  391. <section name> and <key name> may have wild characters
  392. NoOverwriteIniMappings\<no overwrite path>
  393. Lists all INI settings that are going to be mapped into registry,
  394. unless NT supplies a value, in which the registry value is mapped
  395. to the INI file.
  396. no overwrite path - Specifies <INI file>\<section name>\<key name>,
  397. where <section name> and <key name> may have
  398. wild characters.
  399. IniConv\<9xPath>
  400. Causes path conversion on a file (INI processing). Conversion is done
  401. in-place. The NT side code converts the 9x path to the NT path via
  402. GetPathStringOnNt.
  403. PnpIds\<pnp id> (temporary -- Win9x side only)
  404. Lists all PNP IDs on the Win9x machine
  405. UserFileMoveDest\<path>
  406. Lists the destination for user files for a particular user. Used to
  407. easy record one to many copy
  408. path - Specifies the destination path
  409. UserFileMoveSrc\<path>\<user>
  410. Lists the source file for user files for a particular user. Used to
  411. easy record one to many copy
  412. path - Specifies the source path
  413. user - Specifies the user name
  414. NT TimeZones\<index>\<description>
  415. Lists nt timezones. Used for mapping timezones and to resolve ambigious timezone cases.
  416. <index> - The index used by syssetup to specify the nt timezone.
  417. <description> - The displayable description of the timezone.
  418. 9x TimeZones\<description>\<index>
  419. Lists 9x timezones and the nt timezones that can possibly map to them.
  420. <description> - The description of the timezone
  421. SfPaths\<path>
  422. Holds the paths for other categories (ShellFolders for example). Used to
  423. consolidate the paths.
  424. path - Specifies the shell folder path (either an NT or Win9x location),
  425. in either long or short format.
  426. SfTemp\<path> = <offset> (temporary category)
  427. Specifies the path of the temporary location for a shell folder. This is
  428. used only on the Win9x side to queue up a list of things to move. The
  429. code in buildinf.c then transfers these paths into the win9xmov.txt file.
  430. path - Specifies the Win9x file or directory to move
  431. offset - Specifies the offset to the destination path (in SfPaths)
  432. SfOrderNameSrc\<identifier>\<path>\<sequencer> = <shell folder ptr> (temporary category)
  433. Specifies the shell folder list, sorted by the shell folder identifier.
  434. This category is only for work purposes, do not rely on it for data
  435. transfer during the upgrade.
  436. identifier - Specifies the shell folder identifier (i.e., Desktop)
  437. path - Specifies the Win9x path
  438. sequencer - Random value that is used to make multiple instances of
  439. identifier/path pairs unique
  440. shell folder ptr - Specifies the pointer to a Win9x-side SHELLFOLDER
  441. struct
  442. SfOrderSrc\<path>\<sequencer> = <shell folder ptr> (temporary category)
  443. Specifies the shell folder list, sorted by the path. This category is
  444. only for work purposes, do not rely on it for data transfer during the
  445. upgrade.
  446. path - Specifies the Win9x shell folder path
  447. sequencer - Random value that is used to make multiple instances of
  448. path unique
  449. shell folder ptr - Specifies the pointer to a Win9x-side SHELLFOLDER
  450. struct
  451. SfMoved\<path>
  452. Specifies a path that has been processed. This category is used only
  453. for work purposes, do not rely on it for data transfer during the
  454. upgrade.
  455. path - Specifies Win9x shell folder that was moved
  456. System32ForcedMove\<file pattern>
  457. Lists all patterns for files that should be moved from System to System32 no matter what.
  458. file pattern - pattern for files to be moved
  459. UserRegData\<value>
  460. This category lists REG_SZs for UserRegLoc.
  461. value - Specifies the REG_SZ
  462. UserRegData\<user>\<encoded key>=<offset to REG_SZ>
  463. This category holds a list of encoded reg key/value pairs for a pariticular
  464. user. The data listed in this category is saved to the user's registry
  465. at the beginning of the migration of the user registry.
  466. user - Specifies the fixed, domain-less user name
  467. encoded key - Specifies the registry key and value, encoded with
  468. CreateEncodedRegistryStringEx(key,value,FALSE)
  469. offset to REG_SZ - Specifies offset to a node in UserRegData
  470. SFFilesDest\<path>
  471. Destinations for files inside shell folders. We record this only to help
  472. the collision detection filter on 9x side. If two shell folders are going
  473. to be moved to the same location there is a potential of collision there.
  474. We need to see that and to add the proper move operation.
  475. NewLinks\<sequencer>\<various data>
  476. This is used for recording new links that need to be created on NT side. For now
  477. we do this only to convert PIFs pointing to command.com to LNKs to cmd.exe
  478. Mapi32Locations\<filename>
  479. This is used to store all mapi32.dll files on the system. At the end we look to see
  480. if they are all handled by a migration DLL. If not, we add a general message to report.
  481. StartupSF\<path>
  482. This will list all startup shell folders found on the system
  483. Good Imes\<imefile>
  484. This lists ime files that may be merged into the keybouard layout registry during NT
  485. side processing.
  486. Keyboard Layouts\<sequencer>\<layoutid>
  487. This lists preloads during NT side processing.
  488. DirsCollision\<src path>
  489. Files that need to be renamed because they are colliding with some NT dirs.
  490. MMedia\System\<System Settings>
  491. Multimedia-related system settings
  492. MMedia\Users\<UserName>\<User Settings>
  493. Multimedia-related user settings
  494. IgnoredCollisions\<pattern>
  495. These are files for which the collision with NT files (in shell folders merge) is ignored.
  496. Suppress Answer File Settings\<section>\<key>
  497. These are suppresed answer file settings from migration dlls.
  498. ChangedFileProps\<original file path>\<new file name>
  499. This is the set of files that were renamed on Win9x side (special files like
  500. %windir%\system32 cannot be renamed in textmode setup because the dir is created
  501. as setup starts, before the file is actually renamed)
  502. If user cancels Setup, all files in this set are restored to their previous state.
  503. Full Directory Deletes\<Path>
  504. Set of directories that are added to w9xddir.txt. These directories are deleted along
  505. with all of there contents during textmode.
  506. IniAct\First\<OrigIniPath>\<TempFileLocation>
  507. Set of INI files on which some actions will be performed before any other INI files
  508. processing is done and before shell folders are migrated; they are stored as original
  509. path followed by the temporary path where they are copied (so they don't get replaced
  510. by NT versions); the starting point of TempFileLocation is recognized by the : symbol
  511. after a drive letter.
  512. IniAct\Last\<OrigIniPath>\<TempFileLocation>
  513. Same semantics as above, except INI files stored here are processed last,
  514. after users are migrated and registries are merged.
  515. FileEdit\<path> (has optional binary value)
  516. This category lists files that are to be edited in GUI mode. The
  517. optional binary value contains a TOKENSET. The reader of the binary
  518. value must convert the offsets in TOKENSET into pointers.
  519. CleanOut\<path> = <type>
  520. This category is used to support uninstall. Files, directories and
  521. trees listed here are evaluated during GUI mode and are put in the delete
  522. txt file used by uninstall.
  523. <path> - Specifies the full file path or full subdirectory path
  524. <type> - Specifies 0 for file, 1 for directory, 2 for tree or 3 for a
  525. tree that can't have user files
  526. EmptyDirs\<path>
  527. This category tells the uninstall algorithm to write files to mkdir.txt.
  528. <path> - Specifies the path to the directory that is empty on Win9x
  529. ShellFolderPerUser\<name> = <common offset>
  530. This category maps a per-user shell folder name to its common version
  531. ShellFolderCommon\<name> = <per-user offset>
  532. This category maps a common shell folder name to its per-user version
  533. */
  534. //
  535. // FileEnum exclude groups
  536. //
  537. #define MEMDB_CATEGORY_FILEENUM TEXT("FileEnumExcl")
  538. #define MEMDB_FIELD_FE_PATHS TEXT("Paths")
  539. #define MEMDB_FIELD_FE_FILES TEXT("Files")
  540. #define MEMDB_PROFILE_EXCLUSIONS 1
  541. #define MEMDB_FILEDEL_EXCLUSIONS 4
  542. //
  543. // LinkEdit
  544. //
  545. #define MEMDB_CATEGORY_DEFAULT_PIF TEXT("DefaultPif")
  546. #define MEMDB_CATEGORY_DEFAULT_PIFA "DefaultPif"
  547. #define MEMDB_CATEGORY_DEFAULT_PIFW L"DefaultPif"
  548. #define MEMDB_CATEGORY_LINKEDIT TEXT("LinkEdit")
  549. #define MEMDB_CATEGORY_LINKEDITA "LinkEdit"
  550. #define MEMDB_CATEGORY_LINKEDIT_TARGET TEXT("Target")
  551. #define MEMDB_CATEGORY_LINKEDIT_ARGS TEXT("Arguments")
  552. #define MEMDB_CATEGORY_LINKEDIT_WORKDIR TEXT("WorkDir")
  553. #define MEMDB_CATEGORY_LINKEDIT_ICONPATH TEXT("IconPath")
  554. #define MEMDB_CATEGORY_LINKEDIT_ICONNUMBER TEXT("IconNumber")
  555. #define MEMDB_CATEGORY_LINKEDIT_FULLSCREEN TEXT("FullScreen")
  556. #define MEMDB_CATEGORY_LINKEDIT_XSIZE TEXT("xSize")
  557. #define MEMDB_CATEGORY_LINKEDIT_YSIZE TEXT("ySize")
  558. #define MEMDB_CATEGORY_LINKEDIT_QUICKEDIT TEXT("QuickEdit")
  559. #define MEMDB_CATEGORY_LINKEDIT_FONTNAME TEXT("FontName")
  560. #define MEMDB_CATEGORY_LINKEDIT_XFONTSIZE TEXT("xFontSize")
  561. #define MEMDB_CATEGORY_LINKEDIT_YFONTSIZE TEXT("yFontSize")
  562. #define MEMDB_CATEGORY_LINKEDIT_FONTWEIGHT TEXT("FontWeight")
  563. #define MEMDB_CATEGORY_LINKEDIT_FONTFAMILY TEXT("FontFamily")
  564. #define MEMDB_CATEGORY_LINKEDIT_CODEPAGE TEXT("CodePage")
  565. #define MEMDB_CATEGORY_LINKEDIT_SHOWNORMAL TEXT("ShowNormal")
  566. #define MEMDB_CATEGORY_LINKSTUB_TARGET TEXT("StubTarget")
  567. #define MEMDB_CATEGORY_LINKSTUB_ARGS TEXT("StubArguments")
  568. #define MEMDB_CATEGORY_LINKSTUB_WORKDIR TEXT("StubWorkDir")
  569. #define MEMDB_CATEGORY_LINKSTUB_ICONPATH TEXT("StubIconPath")
  570. #define MEMDB_CATEGORY_LINKSTUB_ICONNUMBER TEXT("StubIconNumber")
  571. #define MEMDB_CATEGORY_LINKSTUB_SEQUENCER TEXT("StubSequencer")
  572. #define MEMDB_CATEGORY_LINKSTUB_MAXSEQUENCE TEXT("StubMaxSequence")
  573. #define MEMDB_CATEGORY_LINKSTUB_ANNOUNCEMENT TEXT("StubAnnouncement")
  574. #define MEMDB_CATEGORY_LINKSTUB_REQFILE TEXT("StubReqFile")
  575. #define MEMDB_CATEGORY_LINKSTUB_REPORTAVAIL TEXT("PresentInReport")
  576. #define MEMDB_CATEGORY_LINKSTUB_SHOWMODE TEXT("ShowMode")
  577. #define MEMDB_CATEGORY_REQFILES_MAIN TEXT("TMP_HIVE\\ReqFilesMain")
  578. #define MEMDB_CATEGORY_REQFILES_ADDNL TEXT("TMP_HIVE\\ReqFilesAddnl")
  579. // LinkStrings\<path>
  580. #define MEMDB_CATEGORY_LINK_STRINGS TEXT("LinkStrings")
  581. // LinkGuids\<guid>\<seq> = <offset to LinkStrings>
  582. #define MEMDB_CATEGORY_LINK_GUIDS TEXT("LinkGUIDs")
  583. // AdministratorInfo\account\<name>
  584. #define MEMDB_CATEGORY_ADMINISTRATOR_INFO TEXT("AdministratorInfo")
  585. #define MEMDB_ITEM_AI_ACCOUNT TEXT("Account")
  586. #define MEMDB_ITEM_AI_USER_DOING_MIG TEXT("UserDoingMig")
  587. // UserDatLoc\<username>\location (no fields)
  588. #define MEMDB_CATEGORY_USER_DAT_LOC TEXT("UserDatLoc")
  589. #define MEMDB_CATEGORY_USER_DAT_LOCA "UserDatLoc"
  590. // FixedUserNames\<orguser_encoded>\<newuser>
  591. #define MEMDB_CATEGORY_FIXEDUSERNAMES TEXT("FixedUserNames")
  592. #define MEMDB_CATEGORY_FIXEDUSERNAMESA "FixedUserNames"
  593. #define MEMDB_CATEGORY_FIXEDUSERNAMESW L"FixedUserNames"
  594. // UserProfileExt\<username>\location (no fields)
  595. #define MEMDB_CATEGORY_USER_PROFILE_EXT TEXT("UserProfileExt")
  596. // Paths\<pathitem>\<path> (no fields)
  597. #define MEMDB_CATEGORY_PATHS TEXT("Paths")
  598. #define MEMDB_CATEGORY_PATHSA "Paths"
  599. #define MEMDB_ITEM_RELOC_WINDIR TEXT("RelocWinDir")
  600. #define MEMDB_ITEM_RELOC_WINDIRA "RelocWinDir"
  601. // CancelFileDel\<path>
  602. #define MEMDB_CATEGORY_CANCELFILEDEL TEXT("CancelFileDel")
  603. #define MEMDB_CATEGORY_CANCELFILEDELA "CancelFileDel"
  604. #define MEMDB_CATEGORY_CANCELFILEDELW L"CancelFileDel"
  605. // Answer File Restrictions\section\key pattern
  606. #define MEMDB_CATEGORY_UNATTENDRESTRICTRIONS TEXT("SIF Restrictions")
  607. // Answer File Values\<Id>\<Sequence>\Value
  608. #define MEMDB_CATEGORY_AF_VALUES TEXT("SIF Values")
  609. // Answer File Sections And Keys\Section\<Key Sequence>\<Value sequence>
  610. #define MEMDB_CATEGORY_AF_SECTIONS TEXT("SIF Sections")
  611. // Ras Migration Data\<user>\<entry>\<item>=<bindata>
  612. #define MEMDB_CATEGORY_RAS_MIGRATION TEXT("Ras Migration for ")
  613. #define MEMDB_CATEGORY_RAS_INFO TEXT("RAS Info")
  614. #define MEMDB_CATEGORY_RAS_DATA TEXT("Ras Data")
  615. #define MEMDB_FIELD_USER_SETTINGS TEXT("User Settings")
  616. // LogSaveTo\<path>
  617. #define MEMDB_CATEGORY_LOGSAVETO TEXT("LogSaveTo")
  618. // Pattern for Plug-In DLL list (used in enumeration)
  619. #define MEMDB_CATEGORY_MIGRATION_DLL TEXT("MigDll")
  620. #define MEMDB_FIELD_DLL TEXT("dll")
  621. #define MEMDB_FIELD_WD TEXT("wd")
  622. #define MEMDB_FIELD_DESC TEXT("desc")
  623. #define MEMDB_FIELD_COMPANY_NAME TEXT("company")
  624. #define MEMDB_FIELD_SUPPORT_PHONE TEXT("phone")
  625. #define MEMDB_FIELD_SUPPORT_URL TEXT("url")
  626. #define MEMDB_FIELD_SUPPORT_INSTRUCTIONS TEXT("instructions")
  627. // FileRename\<src>\<new>
  628. #define MEMDB_CATEGORY_FILERENAME TEXT("FileRename")
  629. #define MEMDB_CATEGORY_FILERENAMEA "FileRename"
  630. #define MEMDB_CATEGORY_FILERENAMEW L"FileRename"
  631. // Network share conversion (NetShares\<share>\<field>\<data>)
  632. #define MEMDB_CATEGORY_NETSHARES TEXT("NetShares")
  633. #define MEMDB_FIELD_PATH TEXT("Path")
  634. #define MEMDB_FIELD_TYPE TEXT("Type")
  635. #define MEMDB_FIELD_REMARK TEXT("Remark")
  636. #define MEMDB_FIELD_ACCESS_LIST TEXT("ACL")
  637. #define MEMDB_FIELD_RO_PASSWORD TEXT("ROP")
  638. #define MEMDB_FIELD_RW_PASSWORD TEXT("RWP")
  639. // DOSMIG Categories
  640. #define MEMDB_CATEGORY_DM_LINES TEXT("DOSMIG LINES")
  641. #define MEMDB_CATEGORY_DM_FILES TEXT("DOSMIG FILES")
  642. // Registry Suppression
  643. #define MEMDB_CATEGORY_HKR TEXT("HKR")
  644. #define MEMDB_CATEGORY_HKLM TEXT("HKLM")
  645. // OLE object suppression
  646. #define MEMDB_CATEGORY_GUIDS TEXT("GUIDs")
  647. #define MEMDB_CATEGORY_UNSUP_GUIDS TEXT("UGUIDs")
  648. #define MEMDB_CATEGORY_PROGIDS TEXT("ProgIDs")
  649. // Domain categories
  650. #define MEMDB_CATEGORY_AUTOSEARCH TEXT("AutosearchDomain")
  651. #define MEMDB_CATEGORY_KNOWNDOMAIN TEXT("KnownDomain")
  652. // User passwords
  653. #define MEMDB_CATEGORY_USERPASSWORD TEXT("UserPassword")
  654. // State category
  655. #define MEMDB_CATEGORY_STATE TEXT("State")
  656. #define MEMDB_ITEM_MSNP32 TEXT("MSNP32")
  657. #define MEMDB_ITEM_PLATFORM_NAME TEXT("PlatformName")
  658. #define MEMDB_ITEM_MAJOR_VERSION TEXT("MajorVersion")
  659. #define MEMDB_ITEM_MINOR_VERSION TEXT("MinorVersion")
  660. #define MEMDB_ITEM_BUILD_NUMBER TEXT("BuildNumber")
  661. #define MEMDB_ITEM_PLATFORM_ID TEXT("PlatformId")
  662. #define MEMDB_ITEM_VERSION_TEXT TEXT("VersionText")
  663. #define MEMDB_ITEM_CODE_PAGE TEXT("CodePage")
  664. #define MEMDB_ITEM_LOCALE TEXT("Locale")
  665. #define MEMDB_ITEM_ADMIN_PASSWORD TEXT("AP")
  666. #define MEMDB_ITEM_ROLLBACK_SPACE TEXT("DiskSpaceForRollback")
  667. #define MEMDB_ITEM_MASTER_SEQUENCER TEXT("MasterSequencer")
  668. // MyDocsMoveWarning\<user>\<path>
  669. #define MEMDB_CATEGORY_MYDOCS_WARNING TEXT("MyDocsMoveWarning")
  670. // NtFilesRemoved\<filename> = <offset to NtDirs>
  671. #define MEMDB_CATEGORY_NT_DEL_FILES TEXT("NtFilesRemoved")
  672. #define MEMDB_CATEGORY_NT_DEL_FILESA "NtFilesRemoved"
  673. #define MEMDB_CATEGORY_NT_DEL_FILESW L"NtFilesRemoved"
  674. // NtFiles\<filename> = <offset to NtDirs>
  675. #define MEMDB_CATEGORY_NT_FILES TEXT("NtFiles")
  676. #define MEMDB_CATEGORY_NT_FILESA "NtFiles"
  677. #define MEMDB_CATEGORY_NT_FILESW L"NtFiles"
  678. #define MEMDB_CATEGORY_NT_FILES_EXCEPT TEXT("NtFilesExcept")
  679. #define MEMDB_CATEGORY_NT_FILES_EXCEPTA "NtFilesExcept"
  680. #define MEMDB_CATEGORY_NT_FILES_EXCEPTW L"NtFilesExcept"
  681. // NtDirs\<path>
  682. #define MEMDB_CATEGORY_NT_DIRS TEXT("NtDirs")
  683. #define MEMDB_CATEGORY_NT_DIRSA "NtDirs"
  684. #define MEMDB_CATEGORY_NT_DIRSW L"NtDirs"
  685. // NtFilesBad\<filename> = <offset to NtDirs>
  686. #define MEMDB_CATEGORY_NT_FILES_BAD TEXT("NtFilesBad")
  687. #define MEMDB_CATEGORY_NT_FILES_BADA "NtFilesBad"
  688. #define MEMDB_CATEGORY_NT_FILES_BADW L"NtFilesBad"
  689. // ChangedFileProps\<original file path>\<new file name only>
  690. #define MEMDB_CATEGORY_CHG_FILE_PROPS TEXT("ChangedFileProps")
  691. #define MEMDB_CATEGORY_CHG_FILE_PROPSA "ChangedFileProps"
  692. #define MEMDB_CATEGORY_CHG_FILE_PROPSW L"ChangedFileProps"
  693. // Stf\<path>
  694. #define MEMDB_CATEGORY_STF TEXT("Stf")
  695. // StfTemp\<path>=<infptr>
  696. #define MEMDB_CATEGORY_STF_TEMP TEXT("StfTemp")
  697. // StfSections\<path>=<section number>
  698. #define MEMDB_CATEGORY_STF_SECTIONS TEXT("StfSections")
  699. // HelpFilesDll\<dllname>
  700. #define MEMDB_CATEGORY_HELP_FILES_DLL TEXT("HelpFilesDll")
  701. #define MEMDB_CATEGORY_HELP_FILES_DLLA "HelpFilesDll"
  702. #define MEMDB_CATEGORY_HELP_FILES_DLLW L"HelpFilesDll"
  703. // \<dllname>
  704. #define MEMDB_CATEGORY_REPORT TEXT("Report")
  705. // UserSuppliedDrivers\<infname>\<local_path>
  706. #define MEMDB_CATEGORY_USER_SUPPLIED_DRIVERS TEXT("UserSuppliedDrivers")
  707. // DisabledMigDlls\<product id>
  708. #define MEMDB_CATEGORY_DISABLED_MIGDLLS TEXT("DisabledMigDlls")
  709. // MissingImports\<missing import sample>
  710. #define MEMDB_CATEGORY_MISSING_IMPORTS TEXT("MissingImports")
  711. #define MEMDB_CATEGORY_MISSING_IMPORTSA "MissingImports"
  712. #define MEMDB_CATEGORY_MISSING_IMPORTSW L"MissingImports"
  713. #define MEMDB_TMP_HIVE TEXT("TMP_HIVE")
  714. #define MEMDB_TMP_HIVEA "TMP_HIVE"
  715. #define MEMDB_TMP_HIVEW L"TMP_HIVE"
  716. // ModuleCheck\<full path module name>=<status value>
  717. #define MEMDB_CATEGORY_MODULE_CHECK TEXT("TMP_HIVE\\ModuleCheck")
  718. #define MEMDB_CATEGORY_MODULE_CHECKA "TMP_HIVE\\ModuleCheck"
  719. #define MEMDB_CATEGORY_MODULE_CHECKW L"TMP_HIVE\\ModuleCheck"
  720. // NewNames\<name group>\<field>\<name>
  721. #define MEMDB_CATEGORY_NEWNAMES TEXT("NewNames")
  722. #define MEMDB_FIELD_NEW TEXT("New")
  723. #define MEMDB_FIELD_OLD TEXT("Old")
  724. // InUseNames\<name group>\<name>
  725. #define MEMDB_CATEGORY_INUSENAMES TEXT("InUseNames")
  726. // DeferredAnnounce\<full path module name> = Offset
  727. #define MEMDB_CATEGORY_DEFERREDANNOUNCE TEXT("TMP_HIVE\\DeferredAnnounce")
  728. #define MEMDB_CATEGORY_DEFERREDANNOUNCEA "TMP_HIVE\\DeferredAnnounce"
  729. #define MEMDB_CATEGORY_DEFERREDANNOUNCEW L"TMP_HIVE\\DeferredAnnounce"
  730. // KnonwnGood\<full path module name>
  731. #define MEMDB_CATEGORY_KNOWN_GOOD TEXT("TMP_HIVE\\KnownGood")
  732. #define MEMDB_CATEGORY_KNOWN_GOODA "TMP_HIVE\\KnownGood"
  733. #define MEMDB_CATEGORY_KNOWN_GOODW L"TMP_HIVE\\KnownGood"
  734. // CompatibleShellModules\<full path module name>
  735. #define MEMDB_CATEGORY_COMPATIBLE_SHELL TEXT("TMP_HIVE\\CompatibleShellModules")
  736. #define MEMDB_CATEGORY_COMPATIBLE_SHELLA "TMP_HIVE\\CompatibleShellModules"
  737. #define MEMDB_CATEGORY_COMPATIBLE_SHELLW L"TMP_HIVE\\CompatibleShellModules"
  738. // CompatibleShellModulesNT\<full path module name>
  739. #define MEMDB_CATEGORY_COMPATIBLE_SHELL_NT TEXT("CompatibleShellModules")
  740. #define MEMDB_CATEGORY_COMPATIBLE_SHELL_NTA "CompatibleShellModules"
  741. #define MEMDB_CATEGORY_COMPATIBLE_SHELL_NTW L"CompatibleShellModules"
  742. // CompatibleRunKeyModules\<full path module name>
  743. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEY TEXT("TMP_HIVE\\CompatibleRunKeyModules")
  744. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEYA "TMP_HIVE\\CompatibleRunKeyModules"
  745. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEYW L"TMP_HIVE\\CompatibleRunKeyModules"
  746. // CompatibleRunKeyModulesNT\<value name>
  747. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEY_NT TEXT("CompatibleRunKeyModules")
  748. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEY_NTA "CompatibleRunKeyModules"
  749. #define MEMDB_CATEGORY_COMPATIBLE_RUNKEY_NTW L"CompatibleRunKeyModules"
  750. // IncompatibleRunKeyModulesNT\<value name>
  751. #define MEMDB_CATEGORY_INCOMPATIBLE_RUNKEY_NT TEXT("IncompatibleRunKeyModules")
  752. #define MEMDB_CATEGORY_INCOMPATIBLE_RUNKEY_NTA "IncompatibleRunKeyModules"
  753. #define MEMDB_CATEGORY_INCOMPATIBLE_RUNKEY_NTW L"IncompatibleRunKeyModules"
  754. // CompatibleDosModules\<full path module name>
  755. #define MEMDB_CATEGORY_COMPATIBLE_DOS TEXT("TMP_HIVE\\CompatibleDosModules")
  756. #define MEMDB_CATEGORY_COMPATIBLE_DOSA "TMP_HIVE\\CompatibleDosModules"
  757. #define MEMDB_CATEGORY_COMPATIBLE_DOSW L"TMP_HIVE\\CompatibleDosModules"
  758. // CompatibleDosModulesNT\<full path module name>
  759. #define MEMDB_CATEGORY_COMPATIBLE_DOS_NT TEXT("CompatibleDosModules")
  760. #define MEMDB_CATEGORY_COMPATIBLE_DOS_NTA "CompatibleDosModules"
  761. #define MEMDB_CATEGORY_COMPATIBLE_DOS_NTW L"CompatibleDosModules"
  762. // CompatibleHlpExtensions\<extension module>
  763. #define MEMDB_CATEGORY_GOOD_HLP_EXTENSIONS TEXT("TMP_HIVE\\GoodHlpExtensions")
  764. // CompatibleHlpFiles\<full path module name>
  765. #define MEMDB_CATEGORY_COMPATIBLE_HLP TEXT("TMP_HIVE\\CompatibleHlpFiles")
  766. #define MEMDB_CATEGORY_COMPATIBLE_HLPA "TMP_HIVE\\CompatibleHlpFiles"
  767. #define MEMDB_CATEGORY_COMPATIBLE_HLPW L"TMP_HIVE\\CompatibleHlpFiles"
  768. // Shortcuts\<full path shortcut name>
  769. #define MEMDB_CATEGORY_SHORTCUTS TEXT("TMP_HIVE\\Shortcuts")
  770. #define MEMDB_CATEGORY_SHORTCUTSA "TMP_HIVE\\Shortcuts"
  771. #define MEMDB_CATEGORY_SHORTCUTSW L"TMP_HIVE\\Shortcuts"
  772. // BackupDirs\<full path backup dir>
  773. #define MEMDB_CATEGORY_BACKUPDIRS TEXT("TMP_HIVE\\BackupDirs")
  774. #define MEMDB_CATEGORY_BACKUPDIRSA "TMP_HIVE\\BackupDirs"
  775. #define MEMDB_CATEGORY_BACKUPDIRSW L"TMP_HIVE\\BackupDirs"
  776. // ProcessSection\<migdb section>
  777. #define MEMDB_CATEGORY_MIGRATION_SECTION TEXT("MigrationSection")
  778. // CleanUpDir\<path>
  779. #define MEMDB_CATEGORY_CLEAN_UP_DIR TEXT("CleanUpDir")
  780. // Win9x APIs
  781. #define MEMDB_CATEGORY_WIN9X_APIS TEXT("TMP_HIVE\\Win9x APIs")
  782. //
  783. // Network Adapters and NetTransKeys
  784. //
  785. #define MEMDB_CATEGORY_NETTRANSKEYS TEXT("NetTransKeys")
  786. #define MEMDB_CATEGORY_NETADAPTERS TEXT("Network Adapters")
  787. #define MEMDB_FIELD_PNPID TEXT("PNPID")
  788. #define MEMDB_FIELD_DRIVER TEXT("Driver")
  789. // Icons\<path>\<index> = offset inside icon data file, flags give new seq
  790. #define MEMDB_CATEGORY_ICONS TEXT("Icons")
  791. // MovedIcons\<path>\<index> = offset to new path, flags give new seq
  792. #define MEMDB_CATEGORY_ICONS_MOVED TEXT("IconsMoved")
  793. // NicePaths\<path> = MessageId
  794. #define MEMDB_CATEGORY_NICE_PATHS TEXT("NicePaths")
  795. // MigrationPaths\<path>
  796. #define MEMDB_CATEGORY_MIGRATION_PATHS TEXT("MigrationPaths")
  797. // ReportLinks\<ReportEntry>\<Category>
  798. #define MEMDB_CATEGORY_REPORT_LINKS TEXT("ReportLinks")
  799. // SuppressIniMappings\<suppressed path>
  800. #define MEMDB_CATEGORY_SUPPRESS_INI_MAPPINGS TEXT("SuppressIniMappings")
  801. #define MEMDB_CATEGORY_SUPPRESS_INI_MAPPINGSW L"SuppressIniMappings"
  802. // NoOverwriteIniMappings\<no overwrite path>
  803. #define MEMDB_CATEGORY_NO_OVERWRITE_INI_MAPPINGS TEXT("NoOverwriteIniMappings")
  804. #define MEMDB_CATEGORY_NO_OVERWRITE_INI_MAPPINGSW L"NoOverwriteIniMappings"
  805. // IniConv\<9xIniPath>
  806. #define MEMDB_CATEGORY_INIFILES_CONVERT TEXT("IniConv")
  807. // TMP_HIVE\ActFirst\<IniPattern>
  808. #define MEMDB_CATEGORY_INIFILES_ACT_FIRST TEXT("TMP_HIVE\\ActFirst")
  809. // TMP_HIVE\ActLast\<IniPattern>
  810. #define MEMDB_CATEGORY_INIFILES_ACT_LAST TEXT("TMP_HIVE\\ActLast")
  811. // IniAct\First\<OrigIniPath>\<TempFileLocation>
  812. #define MEMDB_CATEGORY_INIACT_FIRST TEXT("IniAct\\First")
  813. // IniAct\Last\<OrigIniPath>\<TempFileLocation>
  814. #define MEMDB_CATEGORY_INIACT_LAST TEXT("IniAct\\Last")
  815. // TMP_HIVE\IgnoreInis\<ignored INI filename>
  816. #define MEMDB_CATEGORY_INIFILES_IGNORE TEXT("TMP_HIVE\\IgnoreInis")
  817. // PNPIDs\<pnpid>
  818. #define MEMDB_CATEGORY_PNPIDS TEXT("TMP_HIVE\\PnpIDs")
  819. // UserFileMoveDest\<path>
  820. #define MEMDB_CATEGORY_USERFILEMOVE_DEST TEXT("UserFileMoveDest")
  821. #define MEMDB_CATEGORY_USERFILEMOVE_DESTA "UserFileMoveDest"
  822. #define MEMDB_CATEGORY_USERFILEMOVE_DESTW L"UserFileMoveDest"
  823. // UserFileMoveSrc\<path>\<user>
  824. #define MEMDB_CATEGORY_USERFILEMOVE_SRC TEXT("UserFileMoveSrc")
  825. #define MEMDB_CATEGORY_USERFILEMOVE_SRCA "UserFileMoveSrc"
  826. #define MEMDB_CATEGORY_USERFILEMOVE_SRCW L"UserFileMoveSrc"
  827. // NT Time Zones\<index>\<display>
  828. #define MEMDB_CATEGORY_NT_TIMEZONES TEXT("TMP_HIVE\\NT Time Zones")
  829. // 9x Time Zones\<display>\<index>
  830. #define MEMDB_CATEGORY_9X_TIMEZONES TEXT("TMP_HIVE\\9x Time Zones")
  831. #define MEMDB_FIELD_COUNT TEXT("Count")
  832. #define MEMDB_FIELD_INDEX TEXT("Index")
  833. // SfPath\<path>
  834. #define MEMDB_CATEGORY_SHELL_FOLDERS_PATH TEXT("SfPath")
  835. #define MEMDB_CATEGORY_SHELL_FOLDERS_PATHA "SfPath"
  836. #define MEMDB_CATEGORY_SHELL_FOLDERS_PATHW L"SfPath"
  837. // SfTemp\<path> = <offset> (temporary category)
  838. #define MEMDB_CATEGORY_SF_TEMP TEXT("TMP_HIVE\\SfTemp")
  839. #define MEMDB_CATEGORY_SF_TEMPA "TMP_HIVE\\SfTemp"
  840. #define MEMDB_CATEGORY_SF_TEMPW L"TMP_HIVE\\SfTemp"
  841. // SfOrderNameSrc\<identifier>\<path>\<sequencer> = <shell folder ptr>
  842. #define MEMDB_CATEGORY_SF_ORDER_NAME_SRC TEXT("TMP_HIVE\\SfOrderNameSrc")
  843. // SfOrderSrc\<path>\<sequencer> = <shell folder ptr>
  844. #define MEMDB_CATEGORY_SF_ORDER_SRC TEXT("TMP_HIVE\\SfOrderSrc")
  845. // SfMoved\<path>
  846. #define MEMDB_CATEGORY_SHELL_FOLDERS_MOVED TEXT("TMP_HIVE\\SfMoved")
  847. // ShellFoldersDest
  848. #define MEMDB_CATEGORY_SHELLFOLDERS_DEST TEXT("ShellFoldersDest")
  849. #define MEMDB_CATEGORY_SHELLFOLDERS_SRC TEXT("ShellFoldersSrc")
  850. #define MEMDB_CATEGORY_SHELLFOLDERS_ORIGINAL_SRC TEXT("ShellFoldersOriginalSrc")
  851. // System32ForcedMove\<file pattern>
  852. #define MEMDB_CATEGORY_SYSTEM32_FORCED_MOVE TEXT("TMP_HIVE\\System32ForcedMove")
  853. #define MEMDB_CATEGORY_SYSTEM32_FORCED_MOVEA "TMP_HIVE\\System32ForcedMove"
  854. #define MEMDB_CATEGORY_SYSTEM32_FORCED_MOVEW L"TMP_HIVE\\System32ForcedMove"
  855. // PathRoot\<path>=<sequencer>,<operations>
  856. #define MEMDB_CATEGORY_PATHROOT TEXT("PathRoot")
  857. #define MEMDB_CATEGORY_PATHROOTA "PathRoot"
  858. #define MEMDB_CATEGORY_PATHROOTW L"PathRoot"
  859. // Data\<data>
  860. // OPTIMIZATION: Overlap with PathRoot
  861. #define MEMDB_CATEGORY_DATA TEXT("PathRoot") //TEXT("Data")
  862. #define MEMDB_CATEGORY_DATAA "PathRoot" //"Data"
  863. #define MEMDB_CATEGORY_DATAW L"PathRoot" //L"Data"
  864. // UserRegData\<value>
  865. #define MEMDB_CATEGORY_USER_REGISTRY_VALUE TEXT("UserRegData")
  866. // UserRegLoc\<user>\<encoded key>=<offset to REG_SZ>
  867. #define MEMDB_CATEGORY_SET_USER_REGISTRY TEXT("UserRegLoc")
  868. // SFFilesDest\<path>
  869. #define MEMDB_CATEGORY_SF_FILES_DEST TEXT("TMP_HIVE\\SFFilesDest")
  870. // SFMigDirs\<SFName>\<Subdir>=<Levels>
  871. #define MEMDB_CATEGORY_SFMIGDIRS TEXT("TMP_HIVE\\SFMigDirs")
  872. // Mapi32Locations\<filename>
  873. #define MEMDB_CATEGORY_MAPI32_LOCATIONS TEXT("TMP_HIVE\\Mapi32Locations")
  874. // StartupSF\<path>
  875. #define MEMDB_CATEGORY_SF_STARTUP TEXT("TMP_HIVE\\StartupSF")
  876. // Keyboard Layouts\<sequencer>\<layoutid>
  877. #define MEMDB_CATEGORY_KEYBOARD_LAYOUTS TEXT("Keyboard Layouts")
  878. // Good Imes\<layoutid>
  879. #define MEMDB_CATEGORY_GOOD_IMES TEXT("Good Imes")
  880. // DirsCollision\<src path>
  881. #define MEMDB_CATEGORY_DIRS_COLLISION TEXT("DirsCollision")
  882. #define MEMDB_CATEGORY_DIRS_COLLISIONA "DirsCollision"
  883. #define MEMDB_CATEGORY_DIRS_COLLISIONW L"DirsCollision"
  884. // IgnoredCollisions\<pattern>
  885. #define MEMDB_CATEGORY_IGNORED_COLLISIONS TEXT("IgnoredCollisions")
  886. #define MEMDB_CATEGORY_IGNORED_COLLISIONSA "IgnoredCollisions"
  887. #define MEMDB_CATEGORY_IGNORED_COLLISIONSW L"IgnoredCollisions"
  888. // Dun Files\full path
  889. #define MEMDB_CATEGORY_DUN_FILES TEXT("TMP_HIVE\\DUN Files")
  890. // MMedia\System\<System Settings>
  891. #define MEMDB_CATEGORY_MMEDIA_SYSTEM TEXT("MMedia\\System")
  892. #define MEMDB_CATEGORY_MMEDIA_SYSTEMA "MMedia\\System"
  893. #define MEMDB_CATEGORY_MMEDIA_SYSTEMW L"MMedia\\System"
  894. // MMedia\Users\<UserName>\<User Settings>
  895. #define MEMDB_CATEGORY_MMEDIA_USERS TEXT("MMedia\\Users")
  896. #define MEMDB_CATEGORY_MMEDIA_USERSA "MMedia\\Users"
  897. #define MEMDB_CATEGORY_MMEDIA_USERSW L"MMedia\\Users"
  898. //
  899. // Suppress Answer File Setting\<section>\<key>
  900. //
  901. #define MEMDB_CATEGORY_SUPPRESS_ANSWER_FILE_SETTINGS TEXT("Suppress Answer File Setting")
  902. //
  903. // Delete directories and all there contents in textmode.
  904. //
  905. #define MEMDB_CATEGORY_FULL_DIR_DELETES TEXT("Full Directory Deletes")
  906. #define MEMDB_CATEGORY_FULL_DIR_DELETESA "Full Directory Deletes"
  907. #define MEMDB_CATEGORY_FULL_DIR_DELETESW L"Full Directory Deletes"
  908. // Briefcases\<BriefcasePath>
  909. #define MEMDB_CATEGORY_BRIEFCASES TEXT("Briefcases")
  910. // FileEdit\<path> = <optional binary value>
  911. #define MEMDB_CATEGORY_FILEEDIT TEXT("FileEdit")
  912. #define MEMDB_CATEGORY_FILEEDITA "FileEdit"
  913. // CleanOut\<path> = <type>
  914. #define MEMDB_CATEGORY_CLEAN_OUT TEXT("CleanOut")
  915. #define MEMDB_CATEGORY_CLEAN_OUTW L"CleanOut"
  916. // EmptyDirs\<path> = <type>
  917. #define MEMDB_CATEGORY_EMPTY_DIRS TEXT("EmptyDirs")
  918. #define MEMDB_CATEGORY_EMPTY_DIRSA "EmptyDirs"
  919. #define MEMDB_CATEGORY_EMPTY_DIRSW L"EmptyDirs"
  920. // CPLs\<CPL name>
  921. #define MEMDB_CATEGORY_CPLS TEXT("TMP_HIVE\\CPLs")
  922. #define MEMDB_CATEGORY_CPLSA "TMP_HIVE\\CPLs"
  923. #define MEMDB_CATEGORY_CPLSW L"TMP_HIVE\\CPLs"
  924. // TMP_HIVE\BadFusion\ComponentName\<AppPath>
  925. #define MEMDB_CATEGORY_BAD_FUSION TEXT("TMP_HIVE\\BadFusion")
  926. // UseNtFiles\<Win9xName>\<NTName>
  927. #define MEMDB_CATEGORY_USE_NT_FILES TEXT("UseNtFiles")
  928. // Autologon = <TRUE if should remain on, FALSE if migpwd should run>
  929. #define MEMDB_CATEGORY_AUTOLOGON TEXT("Autologon")
  930. // ForceCopy section holds win9x keys that are dynamically added to the [Force Win9x Settings]
  931. // section in wkstamig.inx and usermig.inx
  932. // ForceCopy\<Source> = offset
  933. // ForceCopy\<Destination>
  934. #define MEMDB_CATEGORY_FORCECOPY TEXT("ForceCopy")
  935. #define MEMDB_CATEGORY_FORCECOPYA "ForceCopy"
  936. #define MEMDB_CATEGORY_FORCECOPYW L"ForceCopy"
  937. // TMP_HIVE\\CompatReport\Components = <Compatibility Report Component>
  938. // TMP_HIVE\\CompatReport\Objects = <Component pointer>
  939. #define MEMDB_CATEGORY_COMPATREPORT TEXT("TMP_HIVE\\CompatReport")
  940. #define MEMDB_ITEM_OBJECTS TEXT("Objects")
  941. #define MEMDB_ITEM_COMPONENTS TEXT("Components")
  942. // SfPerUser\<shell folder tag> = <offset to common>
  943. #define MEMDB_CATEGORY_SF_PERUSER TEXT("SfPerUser")
  944. // SfCommon\<shell folder tag> = <offset to per-user>
  945. #define MEMDB_CATEGORY_SF_COMMON TEXT("SfCommon")
  946. // TMP_HIVE\\UserSfCollisions\<ShellFolderId>\<ShellFolderPath>
  947. #define MEMDB_CATEGORY_PROFILES_SF_COLLISIONS TEXT("TMP_HIVE\\ProfilesSfCollisions")
  948. #define MEMDB_CATEGORY_PROFILES_SF_COLLISIONSA "TMP_HIVE\\ProfilesSfCollisions"
  949. #define MEMDB_CATEGORY_PROFILES_SF_COLLISIONSW L"TMP_HIVE\\ProfilesSfCollisions"