code: def RunPlugins(
        cls, artifacts_registry, file_system, mount_point, knowledge_base):
      
      searcher = file_system_searcher.FileSystemSearcher(file_system, mount_point)
  
      cls.CollectFromFileSystem(
          artifacts_registry, knowledge_base, searcher, file_system)
  
      # Run the Registry plugins separately so we do not have to open
      # Registry files for every preprocess plugin.
  
      environment_variables = None
      if knowledge_base:
        environment_variables = knowledge_base.GetEnvironmentVariables()
  
      registry_file_reader = FileSystemWinRegistryFileReader(
          file_system, mount_point, environment_variables=environment_variables)
      win_registry = dfwinreg_registry.WinRegistry(
          registry_file_reader=registry_file_reader)
  
      searcher = registry_searcher.WinRegistrySearcher(win_registry)
  
      cls.CollectFromWindowsRegistry(
          artifacts_registry, knowledge_base, searcher)
  
      cls.CollectFromKnowledgeBase(knowledge_base)
  
      if not knowledge_base.HasUserAccounts():
        logger.warning('Unable to find any user accounts on the system.')
docs: Runs the preprocessing plugins.
  
      Args:
        artifacts_registry (artifacts.ArtifactDefinitionsRegistry): artifacts
            definitions registry.
        file_system (dfvfs.FileSystem): file system to be preprocessed.
        mount_point (dfvfs.PathSpec): mount point path specification that refers
            to the base location of the file system.
        knowledge_base (KnowledgeBase): to fill with preprocessing information.