diff --git a/modules/system/system.module b/modules/system/system.module
index 3ebc657..8fa73f9 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2383,6 +2383,7 @@ function _system_rebuild_module_data() {
     // Invoke hook_system_info_alter() to give installed modules a chance to
     // modify the data in the .info files if necessary.
     $type = 'module';
+    module_load_all();
     drupal_alter('system_info', $modules[$key]->info, $modules[$key], $type);
   }
 
diff --git a/update.php b/update.php
index a777920..c85f4c3 100644
--- a/update.php
+++ b/update.php
@@ -370,6 +370,9 @@ if (empty($op) && update_access_allowed()) {
   // in updated code are picked up.
   module_implements('', FALSE, TRUE);
 
+  // Rebuild the registry so that any classes moved by modules are rescanned.
+  registry_rebuild();
+
   // Set up $language, since the installer components require it.
   drupal_language_initialize();
 
