diff --git a/.github/workflows/test_docker.yml b/.github/workflows/test_docker.yml index f34fb61..4113b15 100644 --- a/.github/workflows/test_docker.yml +++ b/.github/workflows/test_docker.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - version: ['38'] + version: ['39'] container: image: registry.fedoraproject.org/fedora:${{ matrix.version }} steps: diff --git a/docs/sources/windows-registry/Files.md b/docs/sources/windows-registry/Files.md index 327ca3b..3227039 100644 --- a/docs/sources/windows-registry/Files.md +++ b/docs/sources/windows-registry/Files.md @@ -155,13 +155,15 @@ Vista | CMI-CreateHive{C619BFE8-791A-4B77-922B-F114AB570920} Windows version | Root key name --- | --- -2000, XP, 2003 | *TODO* +2000 | *TODO* +XP | %SID%_Classes, where %SID%_Classes is a string of the SID of the user +2003 | *TODO* Vista, 7 | %SID%_Classes, where %SID%_Classes is a string of the SID of the user 2008 | *TODO* 2016 | *TODO* 2019 | *TODO* 8 | *TODO* -10 | *TODO* +10 | %SID%_Classes, where %SID%_Classes is a string of the SID of the user ## Notes diff --git a/scripts/mru.py b/scripts/mru.py index d5863cf..c69e731 100755 --- a/scripts/mru.py +++ b/scripts/mru.py @@ -6,6 +6,9 @@ import logging import sys +from dfdatetime import fat_date_time as dfdatetime_fat_date_time +from dfdatetime import semantic_time as dfdatetime_semantic_time + from dfvfs.helpers import volume_scanner as dfvfs_volume_scanner import pyfwsi @@ -18,27 +21,150 @@ class StdoutWriter(output_writers.StdoutOutputWriter): """Stdout output writer.""" - def WriteText(self, text): - """Writes text to stdout. + def _WriteShellItemControlPanelCategory(self, shell_item): + """Writes a control panel category shell item to stdout. + + Args: + shell_item (pyfwsi.item): Shell item. + """ + self.WriteValue( + '\tControl panel category identifier', shell_item.identifier) + + def _WriteShellItemControlPanelItem(self, shell_item): + """Writes a control panel item shell item to stdout. + + Args: + shell_item (pyfwsi.item): Shell item. + """ + self.WriteValue('\tControl panel item identifier', shell_item.identifier) + + def _WriteShellItemFileEntry(self, shell_item): + """Writes a file entry shell item to stdout. + + Args: + shell_item (pyfwsi.item): Shell item. + """ + self.WriteValue('\tFile size', f'{shell_item.file_size:d}') + + fat_date_time = shell_item.get_modification_time_as_integer() + if not fat_date_time: + date_time = dfdatetime_semantic_time.SemanticTime(string='Not set') + else: + date_time = dfdatetime_fat_date_time.FATDateTime( + fat_date_time=fat_date_time) + self.WriteValue('\tModification time', date_time.CopyToDateTimeString()) + + self.WriteValue( + '\tFile attribute flags', + f'0x08{shell_item.file_attribute_flags:08x}') + + self.WriteValue('\tName', shell_item.name) + + def _WriteShellItemNetworkLocation(self, shell_item): + """Writes a network location shell item to stdout. + + Args: + shell_item (pyfwsi.item): Shell item. + """ + self.WriteValue('\tNetwork location', shell_item.location) + + if shell_item.description: + self.WriteValue('\tDescription', shell_item.description) + + if shell_item.comments: + self.WriteValue('\tComments', shell_item.comments) + + def _WriteShellItemVolume(self, shell_item): + """Writes a volume shell item to stdout. Args: - text (bytes): text to write. + shell_item (pyfwsi.item): Shell item. """ - print(text) + if shell_item.name: + self.WriteValue('\tVolume name', shell_item.name) + + if shell_item.identifier: + self.WriteValue('\tVolume identifier', shell_item.identifier) + + if shell_item.shell_folder_identifier: + self.WriteValue( + '\tVolume shell folder identifier', + shell_item.shell_folder_identifier) def WriteShellItem(self, shell_item): """Writes a shell item to stdout. Args: - shell_item (pyfwsi.item): Shell Item to write. + shell_item (pyfwsi.item): Shell item. """ self.WriteValue('Shell item', f'0x{shell_item.class_type:02x}') - self.WriteIntegerValueAsDecimal( - '\tNumber of extension blocks', shell_item.number_of_extension_blocks) + if isinstance(shell_item, pyfwsi.control_panel_category): + self._WriteShellItemControlPanelCategory(shell_item) + + elif isinstance(shell_item, pyfwsi.control_panel_item): + self._WriteShellItemControlPanelItem(shell_item) + + elif isinstance(shell_item, pyfwsi.file_entry): + self._WriteShellItemFileEntry(shell_item) + + elif isinstance(shell_item, pyfwsi.network_location): + self._WriteShellItemNetworkLocation(shell_item) + + elif isinstance(shell_item, pyfwsi.root_folder): + self.WriteValue( + '\tRoot shell folder identifier', shell_item.shell_folder_identifier) + + elif isinstance(shell_item, pyfwsi.volume): + self._WriteShellItemVolume(shell_item) + + if shell_item.number_of_extension_blocks: + self.WriteIntegerValueAsDecimal( + '\tNumber of extension blocks', + shell_item.number_of_extension_blocks) + + for index, extension_block in enumerate(shell_item.extension_blocks): + if index > 1: + self.WriteText('\n') + + self.WriteValue( + '\tExtension block', f'0x{extension_block.signature:04x}') + + if isinstance(extension_block, pyfwsi.file_entry_extension): + fat_date_time = extension_block.get_creation_time_as_integer() + if not fat_date_time: + date_time = dfdatetime_semantic_time.SemanticTime(string='Not set') + else: + date_time = dfdatetime_fat_date_time.FATDateTime( + fat_date_time=fat_date_time) + self.WriteValue('\t\tCreation time', date_time.CopyToDateTimeString()) + + fat_date_time = extension_block.get_access_time_as_integer() + if not fat_date_time: + date_time = dfdatetime_semantic_time.SemanticTime(string='Not set') + else: + date_time = dfdatetime_fat_date_time.FATDateTime( + fat_date_time=fat_date_time) + self.WriteValue('\t\tAccess time', date_time.CopyToDateTimeString()) + + self.WriteValue('\t\tLong name', extension_block.long_name) + + if extension_block.localized_name: + self.WriteValue( + '\t\tLocalized name', extension_block.localized_name) + + file_reference = extension_block.file_reference + if file_reference is not None: + if file_reference > 0x1000000000000: + mft_entry = file_reference & 0xffffffffffff + sequence_number = file_reference >> 48 + file_reference = f'{mft_entry:d}-{sequence_number:d}' + else: + file_reference = f'0x{file_reference:04x}' + + self.WriteValue('\t\tFile reference', file_reference) - for extension_block in shell_item.extension_blocks: - self.WriteValue('\tExtension block', f'0x{extension_block.signature:04x}') + self.WriteText('\n') def Main(): diff --git a/scripts/shellfolders.py b/scripts/shellfolders.py index 777c8aa..7dbb53b 100755 --- a/scripts/shellfolders.py +++ b/scripts/shellfolders.py @@ -5,8 +5,7 @@ import argparse import logging import sys - -from acstore import sqlite_store +import yaml from dfvfs.helpers import volume_scanner as dfvfs_volume_scanner @@ -15,63 +14,33 @@ from winregrc import volume_scanner -class Sqlite3DatabaseFileWriter(object): - """SQLite3 database file output writer.""" - - def __init__(self, path, windows_version): - """Initializes a SQLite3 database output writer. - - Args: - path (str): path of the SQLite3 database file. - windows_version (str): the Windows version. - """ - super(Sqlite3DatabaseFileWriter, self).__init__() - self._path = path - self._windows_version = windows_version - self._store = sqlite_store.SQLiteAttributeContainerStore() - - def Open(self): - """Opens the output writer object. - - Returns: - bool: True if successful or False if not. - """ - self._store.Open(path=self._path, read_only=False) - - return True +class StdoutWriter(output_writers.StdoutOutputWriter): + """Stdout output writer.""" - def Close(self): - """Closes the output writer object.""" - self._store.Close() + def WriteHeader(self): + """Writes the header to stdout.""" + print('# winreg-kb shellfolder definitions') + print('---') - def WriteShellFolder(self, shell_folder): - """Writes the shell folder to the database. + def WriteShellFolder(self, shell_folder, windows_versions): + """Writes the shell folder to stdout. Args: shell_folder (WindowsShellFolder): the shell folder. + windows_versions (list[str]): the Windows versions. """ - containers = list(self._store.GetAttributeContainers( - shell_folder.CONTAINER_TYPE, - filter_expression=f'identifier == "{shell_folder.identifier}"')) - - if containers: - # TODO: print duplicates. - logging.info(f'Ignoring duplicate: {shell_folder.identifier:s}') - else: - self._store.AddAttributeContainer(shell_folder) - + print(f'identifier: "{shell_folder.identifier:s}"') -class StdoutWriter(output_writers.StdoutOutputWriter): - """Stdout output writer.""" + if shell_folder.class_name: + print(f'class_name: {shell_folder.class_name:s}') - def WriteShellFolder(self, shell_folder): - """Writes the shell folder to stdout. + if shell_folder.name: + print(f'name: "{shell_folder.name:s}"') - Args: - shell_folder (WindowsShellFolder): the shell folder. - """ - print((f'{shell_folder.identifier:s}\t{shell_folder.name:s}\t' - f'{shell_folder.localized_string:s}')) + windows_versions = ', '.join([ + f'"{version:s}"' for version in sorted(windows_versions)]) + print(f'windows_versions: [{windows_versions:s}]') + print('---') def Main(): @@ -88,21 +57,15 @@ def Main(): help='enable debug output.') argument_parser.add_argument( - '--db', dest='database', action='store', metavar='shellitems.db', - default=None, help=( - 'path of the attribute container database to write to.')) + '-w', '--windows_version', '--windows-version', dest='windows_version', + action='store', metavar='Windows XP', default=None, + help='string that identifies the Windows version.') argument_parser.add_argument( - '-w', '--windows_version', '--windows-version', - dest='windows_version', action='store', metavar='Windows XP', - default=None, help='string that identifies the Windows version.') - - argument_parser.add_argument( - 'source', nargs='?', action='store', metavar='PATH', default=None, - help=( - 'path of the volume containing C:\\Windows, the filename of ' - 'a storage media image containing the C:\\Windows directory, ' - 'or the path of a SOFTWARE Registry file.')) + 'source', nargs='?', action='store', metavar='PATH', default=None, help=( + 'path of the volume containing C:\\Windows, the filename of a ' + 'storage media image containing the C:\\Windows directory, or the ' + 'path of a SOFTWARE Registry file.')) options = argument_parser.parse_args() @@ -113,16 +76,17 @@ def Main(): print('') return False - if options.database and not options.windows_version: - print('Windows version missing.') - print('') - argument_parser.print_help() - print('') - return False - logging.basicConfig( level=logging.INFO, format='[%(levelname)s] %(message)s') + try: + with open(options.source, 'r', encoding='utf-8') as file_object: + source_definitions = list(yaml.safe_load_all(file_object)) + + except (SyntaxError, UnicodeDecodeError): + source_definitions = [{ + 'source': options.source, 'windows_version': options.windows_version}] + mediator = volume_scanner.WindowsRegistryVolumeScannerMediator() scanner = volume_scanner.WindowsRegistryVolumeScanner(mediator=mediator) @@ -131,22 +95,42 @@ def Main(): volume_scanner_options.snapshots = ['none'] volume_scanner_options.volumes = ['none'] - if not scanner.ScanForWindowsVolume( - options.source, options=volume_scanner_options): - print((f'Unable to retrieve the volume with the Windows directory from: ' - f'{options.source:s}.')) - print('') - return False + shell_folder_per_identifier = {} + windows_versions_per_shell_folder = {} - # TODO: map collector to available Registry keys. - collector_object = shellfolders.ShellFoldersCollector( - debug=options.debug) + for source_definition in source_definitions: + source_path = source_definition['source'] + logging.info(f'Processing: {source_path:s}') - if options.database: - output_writer_object = Sqlite3DatabaseFileWriter( - options.database, options.windows_version) - else: - output_writer_object = StdoutWriter() + if not scanner.ScanForWindowsVolume( + source_path, options=volume_scanner_options): + logging.error(( + f'Unable to retrieve the volume with the Windows directory from: ' + f'{source_path:s}.')) + continue + + # TODO: map collector to available Registry keys. + collector_object = shellfolders.ShellFoldersCollector( + debug=options.debug) + + # TODO: determine Windows version from source. + windows_version = source_definition['windows_version'] + + for shell_folder in collector_object.Collect(scanner.registry): + # TODO: compare existing shell folder + shell_folder_per_identifier[shell_folder.identifier] = shell_folder + + if shell_folder.identifier not in windows_versions_per_shell_folder: + windows_versions_per_shell_folder[shell_folder.identifier] = [] + + windows_versions_per_shell_folder[shell_folder.identifier].append( + windows_version) + + if not shell_folder_per_identifier: + print('No shell folder identifiers found.') + return True + + output_writer_object = StdoutWriter() if not output_writer_object.Open(): print('Unable to open output writer.') @@ -154,17 +138,15 @@ def Main(): return False try: - has_results = False - for shell_folder in collector_object.Collect(scanner.registry): - output_writer_object.WriteShellFolder(shell_folder) - has_results = True + output_writer_object.WriteHeader() + for identifier, windows_versions in sorted( + windows_versions_per_shell_folder.items()): + shell_folder = shell_folder_per_identifier[identifier] + output_writer_object.WriteShellFolder(shell_folder, windows_versions) finally: output_writer_object.Close() - if not has_results: - print('No shell folder identifiers found.') - return True diff --git a/setup.cfg b/setup.cfg index 13e41b7..615fea7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = winregrc -version = 20240211 +version = 20240223 description = Windows Registry resources (winregrc) long_description = winregrc is a Python module part of winreg-kb to allow reuse of Windows Registry resources. long_description_content_type = text/plain @@ -51,6 +51,7 @@ scripts = [options.package_data] winregrc = *.yaml + data/*.yaml [options.packages.find] exclude = diff --git a/tests/shellfolders.py b/tests/shellfolders.py index 15a6dfa..31f814c 100644 --- a/tests/shellfolders.py +++ b/tests/shellfolders.py @@ -84,8 +84,8 @@ def testCollect(self): shell_folder = test_results[1] self.assertIsNotNone(shell_folder) self.assertEqual(shell_folder.identifier, self._GUID2) - self.assertEqual(shell_folder.name, '') - self.assertEqual(shell_folder.localized_string, '') + self.assertIsNone(shell_folder.name) + self.assertIsNone(shell_folder.localized_string) def testCollectEmpty(self): """Tests the Collect function on an empty Registry.""" diff --git a/winregrc/data/observed_shellfolders.yaml b/winregrc/data/observed_shellfolders.yaml new file mode 100644 index 0000000..e0881a8 --- /dev/null +++ b/winregrc/data/observed_shellfolders.yaml @@ -0,0 +1,745 @@ +# winreg-kb shellfolder definitions observed. +--- +identifier: "{00020d75-0000-0000-c000-000000000046}" +name: "Inbox" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{00020d76-0000-0000-c000-000000000046}" +name: "Inbox" +windows_versions: ["Windows NT4"] +--- +identifier: "{00c6d95f-329c-409a-81d7-c46c66ea7f33}" +name: "Default Location" +windows_versions: ["Windows 7"] +--- +identifier: "{0142e4d0-fb7a-11dc-ba4a-000ffe7ab428}" +name: "Biometric Devices (Biometrics)" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{025a5937-a6be-4686-a844-36fe4bec8b6d}" +name: "Power Options" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{031e4825-7b94-4dc3-b131-e946b44c8dd5}" +name: "Users Libraries" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{04731b67-d933-450a-90e6-4acd2e9408fe}" +class_name: CLSID_SearchFolder +name: "Search Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}" +name: "Taskbar (Notification Area Icons)" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{0875dcb6-c686-4243-9432-adccf0b9f2d7}" +name: "Microsoft !OneNote Namespace Extension for Windows Desktop Search" +windows_versions: ["Windows 7"] +--- +identifier: "{0afaced1-e828-11d1-9187-b532f1e9575d}" +name: "Folder Shortcut" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{0bd8e793-d371-11d1-b0b5-0060972919d7}" +name: "!SolidWorks Enterprise PDM" +windows_versions: ["Windows 7"] +--- +identifier: "{0c39a5cf-1a7a-40c8-ba74-8900e6df5fcd}" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{0cd7a5c0-9f37-11ce-ae65-08002b2e1262}" +name: "Cabinet File" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{0df44eaa-ff21-4412-828e-260a8728e7f1}" +name: "Taskbar and Start Menu" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{11016101-e366-4d22-bc06-4ada335c892b}" +name: "Internet Explorer History and Feeds Shell Data Source for Windows Search" +windows_versions: ["Windows XP 32-bit", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{1206f5f1-0569-412c-8fec-3204630dfb70}" +name: "Credential Manager" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{13e7f612-f261-4391-bea2-39df4f3fa311}" +name: "Windows Desktop Search" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{15eae92e-f17a-4431-9f28-805e482dafd4}" +name: "Install New Programs (Get Programs)" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{1723d66a-7a12-443e-88c7-05e1bfe79983}" +name: "Previous Versions Delegate Folder" +windows_versions: ["Windows Vista"] +--- +identifier: "{17cd9488-1228-4b2f-88ce-4298e93e0966}" +name: "Default Programs (Set User Defaults)" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{1a9ba3a0-143a-11cf-8350-444553540000}" +name: "Shell Favorite Folder" +windows_versions: ["Windows 2000"] +--- +identifier: "{1d2680c9-0e2a-469d-b787-065558bc7d43}" +name: "Fusion Cache" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7"] +--- +identifier: "{1f3427c8-5c10-4210-aa03-2ee45287d668}" +name: "User Pinned" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{1f43a58c-ea28-43e6-9ec4-34574a16ebb7}" +name: "Windows Desktop Search MAPI Namespace Extension Class" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{1f4de370-d627-11d1-ba4f-00a0c91eedba}" +name: "Search Results - Computers (Computer Search Results Folder, Network Computers)" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{1fa9085f-25a2-489b-85d4-86326eedcd87}" +name: "Manage Wireless Networks" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{208d2c60-3aea-1069-a2d7-08002b30309d}" +name: "My Network Places (Network)" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{20d04fe0-3aea-1069-a2d8-08002b30309d}" +name: "My Computer (Computer)" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{21ec2020-3aea-1069-a2dd-08002b30309d}" +name: "Control Panel" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2227a280-3aea-1069-a2de-08002b30309d}" +name: "Printers and Faxes (Printers)" +windows_versions: ["Windows NT4", "Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +# Found in !RecentPlaces.lnk +identifier: "{22877a6d-37a1-461a-91b0-dbda5aaebc99}" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{241d7c96-f8bf-4f85-b01f-e2b043341a4b}" +name: "Workspaces Center (Remote Application and Desktop Connections)" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f0-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Search" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f1-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Help and Support" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Windows Security" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f3-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Run..." +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f4-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Internet" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{2559a1f5-21d7-11d4-bdaf-00c04f60b9f0}" +name: "E-mail" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2559a1f6-21d7-11d4-bdaf-00c04f60b9f0}" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{2559a1f7-21d7-11d4-bdaf-00c04f60b9f0}" +name: "Set Program Access and Defaults" +windows_versions: ["Windows XP 32-bit", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{267cf8a9-f4e3-41e6-95b1-af881be130ff}" +name: "Location Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{26ee0668-a00a-44d7-9371-beb064c98683}" +name: "Control Panel" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2728520d-1ec8-4c68-a551-316b684c4ea7}" +name: "Network Setup Wizard" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{28803f59-3a75-4058-995f-4ee5503b023c}" +name: "Bluetooth Devices" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{289978ac-a101-4341-a817-21eba7fd046d}" +name: "Sync Center Conflict Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{289af617-1cc3-42a6-926c-e6a863f0e3ba}" +name: "DLNA Media Servers Data Source" +windows_versions: ["Windows 8.0"] +--- +identifier: "{2965e715-eb66-4719-b53f-1672673bbefa}" +name: "Results Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{2e9e59c0-b437-4981-a647-9c34b9b90891}" +name: "Sync Setup Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{2f6ce85c-f9ee-43ca-90c7-8a9bd53a2467}" +name: "File History Data Source" +windows_versions: ["Windows 8.0"] +--- +identifier: "{3080f90d-d7ad-11d9-bd98-0000947b0257}" +name: "Show Desktop" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{3080f90e-d7ad-11d9-bd98-0000947b0257}" +name: "Window Switcher" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{323ca680-c24d-4099-b94d-446dd2d7249e}" +name: "Common Places" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{328b0346-7eaf-4bbe-a479-7cb88a095f5b}" +name: "Layout Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{335a31dd-f04b-4d76-a925-d6b47cf360df}" +name: "Backup and Restore Center" +windows_versions: ["Windows Vista"] +--- +identifier: "{35786d3c-b075-49b9-88dd-029876e11c01}" +name: "Portable Devices" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{36eef7db-88ad-4e81-ad49-0e313f0c35f8}" +name: "Windows Update" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{38a98528-6cbf-4ca9-8dc0-b1e1d10f7b1b}" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{3c5c43a3-9ce9-4a9b-9699-2ac0cf6cc4bf}" +name: "Configure Wireless Network" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{3f6bc534-dfa1-4ab4-ae54-ef25a74e0107}" +name: "System Restore" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{4026492f-2f69-46b8-b9bf-5654fc07e423}" +name: "Windows Firewall" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{418c8b64-5463-461d-88e0-75e2afa3c6fa}" +name: "Explorer Browser Results Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{4234d49b-0245-4df3-b780-3893943456e1}" +name: "Applications" +windows_versions: ["Windows 8.0"] +--- +# Found in Sample Music.lnk and Sample Pictures.lnk +identifier: "{4336a54d-038b-4685-ab02-99bb52d3fb8b}" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{437ff9c0-a07f-4fa0-af80-84b6c6440a16}" +name: "Command Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{450d8fba-ad25-11d0-98a8-0800361b1103}" +name: "My Documents" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{48e7caab-b918-4e58-a94d-505519c795dc}" +name: "Start Menu Folder" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{5399e694-6ce5-4d6c-8fce-1d8870fdcba0}" +name: "Control Panel command object for Start menu and desktop" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +# Found in File Explorer.lnk +identifier: "{52205fd8-5dfb-447d-801a-d0b52f2e83e1}" +windows_versions: ["Windows 8.0"] +--- +identifier: "{58e3c745-d971-4081-9034-86e34b30836a}" +name: "Speech Recognition Options" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{59031a47-3f72-44a7-89c5-5595fe6b30ee}" +name: "Shared Documents Folder (Users Files)" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{5ea4f148-308c-46d7-98a9-49041b1dd468}" +name: "Mobility Center Control Panel" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{60632754-c523-4b62-b45c-4172da012619}" +name: "User Accounts" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{63da6ec0-2e98-11cf-8d82-444553540000}" +name: "Microsoft FTP Folder" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{640167b4-59b0-47a6-b335-a6b3c0695aea}" +name: "Portable Media Devices" +windows_versions: ["Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{645ff040-5081-101b-9f08-00aa002f954e}" +name: "Recycle Bin" +windows_versions: ["Windows NT4", "Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{64693913-1c21-4f30-a98f-4e52906d3b56}" +class_name: CLSID_AppInstanceFolder +windows_versions: ["Windows 8.0"] +--- +identifier: "{67718415-c450-4f3c-bf8a-b487642dc39b}" +name: "Windows Features" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{6785bfac-9d2d-4be5-b7e2-59937e8fb80a}" +name: "Other Users Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{679f85cb-0220-4080-b29b-5540cc05aab6}" +name: Quick access +windows_versions: [10] +--- +identifier: "{67ca7650-96e6-4fdd-bb43-a8e774f73a57}" +name: "Home Group Control Panel (Home Group)" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{692f0339-cbaa-47e6-b5b5-3b84db604e87}" +name: "Extensions Manager Folder" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{6dfd7c5c-2451-11d3-a299-00c04f8ef6af}" +name: "Folder Options" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{7007acc7-3202-11d1-aad2-00805fc1270e}" +name: "Network Connections (Network and Dial-up Connections)" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{708e1662-b832-42a8-bbe1-0a77121e3908}" +name: "Tree property value folder" +windows_versions: ["Windows Vista"] +--- +identifier: "{71d99464-3b6b-475c-b241-e15883207529}" +name: "Sync Results Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{72b36e70-8700-42d6-a7f7-c9ab3323ee51}" +name: "Search Connector Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{78f3955e-3b90-4184-bd14-5397c15f1efc}" +name: "Performance Information and Tools" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{7a9d77bd-5403-11d2-8785-2e0420524153}" +name: "User Accounts (Users and Passwords)" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{7b81be6a-ce2b-4676-a29e-eb907a5126c5}" +name: "Programs and Features" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{7bd29e00-76c1-11cf-9dd0-00a0c9034933}" +name: "Temporary Internet Files" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{7bd29e01-76c1-11cf-9dd0-00a0c9034933}" +name: "Temporary Internet Files" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{7be9d83c-a729-4d97-b5a7-1b7313c39e0a}" +name: "Programs Folder" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{8060b2e3-c9d7-4a5d-8c6b-ce8eba111328}" +name: "Proximity CPL" +windows_versions: ["Windows 8.0"] +--- +identifier: "{8343457c-8703-410f-ba8b-8b026e431743}" +name: "Feedback Tool" +windows_versions: ["Windows 8.0"] +--- +identifier: "{85bbd920-42a0-1069-a2e4-08002b30309d}" +name: "Briefcase" +windows_versions: ["Windows NT4", "Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{863aa9fd-42df-457b-8e4d-0de1b8015c60}" +name: "Remote Printers" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{865e5e76-ad83-4dca-a109-50dc2113ce9a}" +name: "Programs Folder and Fast Items" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{871c5380-42a0-1069-a2ea-08002b30309d}" +name: "Internet Explorer (Homepage)" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{87630419-6216-4ff8-a1f0-143562d16d5c}" +name: "Mobile Broadband Profile Settings Editor" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{877ca5ac-cb41-4842-9c69-9136e42d47e2}" +name: "File Backup Index" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{88c6c381-2e85-11d0-94de-444553540000}" +name: "ActiveX Cache Folder" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{896664f7-12e1-490f-8782-c0835afd98fc}" +name: "Libraries delegate folder that appears in Users Files Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{89d83576-6bd1-4c86-9454-beb04e94c819}" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{8e908fc9-becc-40f6-915b-f4ca0e70d03d}" +name: "Network and Sharing Center" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{8fd8b88d-30e1-4f25-ac2b-553d3d65f0ea}" +name: "DXP" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9113a02d-00a3-46b9-bc5f-9c04daddd5d7}" +name: "Enhanced Storage Data Source" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{93412589-74d4-4e4e-ad0e-e0cb621440fd}" +name: "Font Settings" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9343812e-1c37-4a49-a12e-4b2d810d956b}" +name: "Search Home" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{96437431-5a90-4658-a77c-25478734f03e}" +name: "Server Manager" +windows_versions: ["Windows 2008"] +--- +identifier: "{96ae8d84-a250-4520-95a5-a47a7e3c548b}" +name: "Parental Controls" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{98d99750-0b8a-4c59-9151-589053683d73}" +name: "Windows Search Service Media Center Namespace Extension Handler" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{98f275b4-4fff-11e0-89e2-7b86dfd72085}" +class_name: CLSID_StartMenuLauncherProviderFolder +windows_versions: ["Windows 8.0"] +--- +identifier: "{992cffa0-f557-101a-88ec-00dd010ccc48}" +name: "Network Connections (Network and Dial-up Connections)" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9a096bb5-9dc3-4d1c-8526-c3cbf991ea4e}" +name: "Internet Explorer RSS Feeds Folder" +windows_versions: ["Windows XP 32-bit", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9c60de1e-e5fc-40f4-a487-460851a8d915}" +name: "AutoPlay" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9c73f5e5-7ae7-4e32-a8e8-8d23b85255bf}" +name: "Sync Center Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{9db7a13c-f208-4981-8353-73cc61ae2783}" +name: "Previous Versions" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{9f433b7c-5f96-4ce1-ac28-aeaa1cc04d7c}" +name: "Security Center" +windows_versions: ["Windows Vista"] +--- +identifier: "{9fe63afd-59cf-4419-9775-abcc3849f861}" +name: "System Recovery (Recovery)" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{a00ee528-ebd9-48b8-944a-8942113d46ac}" +class_name: CLSID_StartMenuCommandingProviderFolder +windows_versions: ["Windows 8.0"] +--- +identifier: "{a3c3d402-e56c-4033-95f7-4885e80b0111}" +name: "Previous Versions Results Delegate Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{a5a3563a-5755-4a6f-854e-afa3230b199f}" +name: "Library Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{a5e46e3a-8849-11d1-9d8c-00c04fc99d61}" +name: "Microsoft Browser Architecture" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{a6482830-08eb-41e2-84c1-73920c2badb9}" +name: "Removable Storage Devices" +windows_versions: ["Windows 8.0"] +--- +identifier: "{a8a91a66-3a7d-4424-8d24-04e180695c7a}" +name: "Device Center (Devices and Printers)" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{aee2420f-d50e-405c-8784-363c582bf45a}" +name: "Device Pairing Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{afdb1f70-2a4c-11d2-9039-00c04f8eeb3e}" +name: "Offline Files Folder" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows 8.0"] +--- +identifier: "{b155bdf8-02f0-451e-9a26-ae317cfd7779}" +name: "Nethood delegate folder (Delegate folder that appears in Computer)" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{b2952b16-0e07-4e5a-b993-58c52cb94cae}" +name: "DB Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{b4fb3f98-c1ea-428d-a78a-d1f5659cba93}" +name: "Other Users Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{b98a2bea-7d42-4558-8bd1-832f41bac6fd}" +name: "Backup And Restore (Backup and Restore Center)" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{bb06c0e4-d293-4f75-8a90-cb05b6477eee}" +name: "System" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{bb64f8a7-bee7-4e1a-ab8d-7d8273f7fdb6}" +name: "Action Center Control Panel" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{bc476f4c-d9d7-4100-8d4e-e043f6dec409}" +name: "Microsoft Browser Architecture" +windows_versions: ["Windows XP 32-bit", "Windows Vista"] +--- +identifier: "{bc48b32f-5910-47f5-8570-5074a8a5636a}" +name: "Sync Results Delegate Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{bd7a2e7b-21cb-41b2-a086-b309680c6b7e}" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{bd84b380-8ca2-1069-ab1d-08000948f534}" +name: "Microsoft Windows Font Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{bdeadf00-c265-11d0-bced-00a0c90ab50f}" +name: "Web Folders" +windows_versions: ["Windows 2000", "Windows XP 32-bit"] +--- +identifier: "{be122a0e-4503-11da-8bde-f66bad1e3f3a}" +name: "Windows Anytime Upgrade" +windows_versions: ["Windows Vista"] +--- +identifier: "{bf782cc9-5a52-4a17-806c-2a894ffeeac5}" +name: "Language Settings" +windows_versions: ["Windows 8.0"] +--- +identifier: "{c291a080-b400-4e34-ae3f-3d2b9637d56c}" +name: "UNCFATShellFolder Class" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{c2b136e2-d50e-405c-8784-363c582bf43e}" +name: "Device Center Initialization" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{c555438b-3c23-4769-a71f-b6d3d9b6053a}" +name: "Display" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{c57a6066-66a3-4d91-9eb9-41532179f0a5}" +name: "Application Suggested Locations" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{c58c4893-3be0-4b45-abb5-a63e4b8c8651}" +name: "Troubleshooting" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{cb1b7f8c-c50a-4176-b604-9e24dee8d4d1}" +name: "Welcome Center (Getting Started)" +windows_versions: ["Windows Vista", "Windows 7"] +--- +identifier: "{d2035edf-75cb-4ef1-95a7-410d9ee17170}" +name: "DLNA Content Directory Data Source" +windows_versions: ["Windows 8.0"] +--- +identifier: "{d20ea4e1-3957-11d2-a40b-0c5020524152}" +name: "Fonts" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista"] +--- +identifier: "{d20ea4e1-3957-11d2-a40b-0c5020524153}" +name: "Administrative Tools" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{d34a6ca6-62c2-4c34-8a7c-14709c1ad938}" +name: "Common Places FS Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{d426cfd0-87fc-4906-98d9-a23f5d515d61}" +name: "Windows Search Service Outlook Express Protocol Handler" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{d4480a50-ba28-11d1-8e75-00c04fa31a86}" +name: "Add Network Place" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{d450a8a1-9568-45c7-9c0e-b4f9fb4537bd}" +name: "Installed Updates" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{d555645e-d4f8-4c29-a827-d93c859c4f2a}" +name: "Ease of Access (Ease of Access Center)" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{d5b1944e-db4e-482e-b3f1-db05827f0978}" +name: "Softex OmniPass Encrypted Folder" +windows_versions: ["Windows XP 32-bit"] +--- +identifier: "{d6277990-4c6a-11cf-8d87-00aa0060f5bf}" +name: "Scheduled Tasks" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{d8559eb9-20c0-410e-beda-7ed416aecc2a}" +name: "Windows Defender" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{d9ef8727-cac2-4e60-809e-86f80a666c91}" +name: "Secure Startup (BitLocker Drive Encryption)" +windows_versions: ["Windows 8.0"] +--- +identifier: "{daf95313-e44d-46af-be1b-cbacea2c3065}" +class_name: CLSID_StartMenuProviderFolder +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{dffacdc5-679f-4156-8947-c5c76bc0b67f}" +name: "Delegate folder that appears in Users Files Folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{e17d4fc0-5564-11d1-83f2-00a0c90dc849}" +name: "Search Results Folder" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{e211b736-43fd-11d1-9efb-0000f8757fcd}" +name: "Scanners and Cameras" +windows_versions: ["Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{e345f35f-9397-435c-8f95-4e922c26259e}" +class_name: CLSID_StartMenuPathCompleteProviderFolder +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{e413d040-6788-4c22-957e-175d1c513a34}" +name: "Sync Center Conflict Delegate Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{e773f1af-3a65-4866-857d-846fc9c4598a}" +name: "Shell Storage Folder Viewer" +windows_versions: ["Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{e7de9b1a-7533-4556-9484-b26fb486475e}" +name: "Network Map" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7"] +--- +identifier: "{e7e4bc40-e76a-11ce-a9bb-00aa004ae837}" +name: "Shell DocObject Viewer" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{e88dcce0-b7b3-11d1-a9f0-00aa0060fa31}" +name: "Compressed Folder" +windows_versions: ["Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{e95a4861-d57a-4be1-ad0f-35267e261739}" +name: "Windows SideShow" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{e9950154-c418-419e-a90a-20c5287ae24b}" +name: "Sensors (Location and Other Sensors)" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{ed228fdf-9ea8-4870-83b1-96b02cfe0d52}" +name: "My Games (Games Explorer)" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{ed50fc29-b964-48a9-afb3-15ebb9b97f36}" +name: "PrintHood delegate folder" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{ed7ba470-8e54-465e-825c-99712043e01c}" +name: "All Tasks" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{ed834ed6-4b5a-4bfe-8f11-a626dcb6a921}" +name: "Personalization Control Panel" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{edc978d6-4d53-4b2f-a265-5805674be568}" +name: "Stream Backed Folder" +windows_versions: ["Windows 8.0"] +--- +identifier: "{f02c1a0d-be21-4350-88b0-7367fc96ef3c}" +name: "Computers and Devices" +windows_versions: ["Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{f1390a9a-a3f4-4e5d-9c5f-98f3bd8d935c}" +name: "Sync Setup Delegate Folder" +windows_versions: ["Windows Vista", "Windows 7", "Windows 8.0"] +--- +identifier: "{f3f5824c-ad58-4728-af59-a1ebe3392799}" +name: "Sticky Notes Namespace Extension for Windows Desktop Search" +windows_versions: ["Windows 7", "Windows 8.0"] +--- +identifier: "{f5175861-2688-11d0-9c5e-00aa00a45957}" +name: "Subscription Folder" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{f6b6e965-e9b2-444b-9286-10c9152edbc5}" +name: "History Vault" +windows_versions: ["Windows 8.0"] +--- +identifier: "{f8c2ab3b-17bc-41da-9758-339d7dbf2d88}" +name: "Previous Versions Results Folder" +windows_versions: ["Windows 2008", "Windows 7", "Windows 8.0"] +--- +identifier: "{f90c627b-7280-45db-bc26-cce7bdd620a4}" +name: "All Tasks" +windows_versions: ["Windows 8.0"] +--- +identifier: "{f942c606-0914-47ab-be56-1321b8035096}" +name: "Storage Spaces" +windows_versions: ["Windows 8.0"] +--- +identifier: "{fb0c9c8a-6c50-11d1-9f1d-0000f8757fcd}" +name: "Scanners & Cameras" +windows_versions: ["Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{fbf23b42-e3f0-101b-8488-00aa003e56f8}" +name: "Internet Explorer" +windows_versions: ["Windows NT4", "Windows 2000", "Windows XP 32-bit", "Windows 2003"] +--- +identifier: "{fe1290f0-cfbd-11cf-a330-00aa00c16e65}" +name: "Directory" +windows_versions: ["Windows 2000"] +--- +identifier: "{ff393560-c2a7-11cf-bff4-444553540000}" +name: "History" +windows_versions: ["Windows 2000", "Windows XP 32-bit", "Windows 2003", "Windows Vista", "Windows 2008", "Windows 7", "Windows 8.0"] diff --git a/winregrc/mru.py b/winregrc/mru.py index af8a888..49582e1 100644 --- a/winregrc/mru.py +++ b/winregrc/mru.py @@ -456,4 +456,12 @@ def Collect(self, registry): # pylint: disable=arguments-differ if self._ProcessKey(current_user_key): result = True + if not result: + # Fallback for if source is a single Usrclass.dat file. + current_user_classes_key = registry.GetKeyByPath( + 'HKEY_CURRENT_USER\\Software\\Classes') + if current_user_classes_key: + if self._ProcessKey(current_user_classes_key): + result = True + return result diff --git a/winregrc/shellfolders.py b/winregrc/shellfolders.py index e56c132..7548ba3 100644 --- a/winregrc/shellfolders.py +++ b/winregrc/shellfolders.py @@ -11,6 +11,7 @@ class WindowsShellFolder(containers_interface.AttributeContainer): """Windows Shell folder. Attributes: + class_name (str): class name (CLSID). identifier (str): identifier (GUID). name (str): name. localized_string (str): localized string of the name. @@ -19,22 +20,23 @@ class WindowsShellFolder(containers_interface.AttributeContainer): CONTAINER_TYPE = 'windows_shell_folder' SCHEMA = { + 'class_name': 'str', 'identifier': 'str', 'localized_string': 'str', 'name': 'str'} - def __init__(self, identifier=None, localized_string=None, name=None): + def __init__(self, identifier=None, localized_string=None): """Initializes a Windows Shell folder. Args: identifier (Optional[str]): identifier (GUID). localized_string (Optional[str]): localized string of the name. - name (Optional[str]): name. """ super(WindowsShellFolder, self).__init__() + self.class_name = None self.identifier = identifier self.localized_string = localized_string - self.name = name + self.name = None class ShellFoldersCollector(interface.WindowsRegistryKeyCollector): @@ -61,21 +63,29 @@ def _CollectShellFolders(self, class_identifiers_key): # The value data type does not have to be a string therefore try to # decode the data as an UTF-16 little-endian string and strip # the trailing end-of-string character - name = value.data.decode('utf-16-le').lstrip('\x00') + name = value.data.decode('utf-16-le').rstrip('\x00') else: - name = '' + name = None + + # TODO: resolve name MUI paths. value = class_identifier_key.GetValueByName('LocalizedString') if value: # The value data type does not have to be a string therefore try to # decode the data as an UTF-16 little-endian string and strip # the trailing end-of-string character - localized_string = value.data.decode('utf-16-le').lstrip('\x00') + localized_string = value.data.decode('utf-16-le').rstrip('\x00') + else: + localized_string = None + + shell_folder = WindowsShellFolder( + identifier=guid, localized_string=localized_string) + if name and name.startswith('CLSID_'): + shell_folder.class_name = name else: - localized_string = '' + shell_folder.name = name - yield WindowsShellFolder( - identifier=guid, localized_string=localized_string, name=name) + yield shell_folder def Collect(self, registry): """Collects Windows Shell folders.