Author: arkurth
Date: Tue Apr  6 20:40:46 2010
New Revision: 931315

URL: http://svn.apache.org/viewvc?rev=931315&view=rev
Log:
VCL-301
Removed registry key removal from Version_6.pm::deactivate() because the keys 
are removed by slmgr.vbs -ckms.  Added command to run slmgr.vbs -dlv to display 
the license information before running Sysprep.

Modified:
    incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows/Version_6.pm

Modified: 
incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows/Version_6.pm
URL: 
http://svn.apache.org/viewvc/incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows/Version_6.pm?rev=931315&r1=931314&r2=931315&view=diff
==============================================================================
--- incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows/Version_6.pm 
(original)
+++ incubator/vcl/trunk/managementnode/lib/VCL/Module/OS/Windows/Version_6.pm 
Tue Apr  6 20:40:46 2010
@@ -688,6 +688,46 @@ sub run_slmgr_ato {
 
 #/////////////////////////////////////////////////////////////////////////////
 
+=head2 run_slmgr_dlv
+
+ Parameters  : None
+ Returns     : If successful: true
+               If failed: false
+ Description : Runs slmgr.vbs -dlv to display licensing information.
+
+=cut
+
+sub run_slmgr_dlv {
+       my $self = shift;
+       if (ref($self) !~ /windows/i) {
+               notify($ERRORS{'CRITICAL'}, 0, "subroutine was called as a 
function, it must be called as a class method");
+               return;
+       }
+       
+       my $management_node_keys     = $self->data->get_management_node_keys();
+       my $computer_node_name       = $self->data->get_computer_node_name();
+       my $system32_path = $self->get_system32_path();
+       
+       # Run cscript.exe slmgr.vbs -dlv to install the product key
+       my $dlv_command = "$system32_path/cmd.exe /c cscript.exe //NoLogo 
C:/Windows/System32/slmgr.vbs -dlv";
+       my ($dlv_exit_status, $dlv_output) = 
run_ssh_command($computer_node_name, $management_node_keys, $dlv_command, '', 
'', 0);
+       if (defined($dlv_exit_status) && $dlv_exit_status == 0) {
+               notify($ERRORS{'OK'}, 0, "licensing information:\n" . 
join("\n", @$dlv_output));
+       }
+       elsif (defined($dlv_exit_status)) {
+               notify($ERRORS{'WARNING'}, 0, "failed to retrieve licensing 
information, exit status: $dlv_exit_status, output:\...@{$dlv_output}");
+               return;
+       }
+       else {
+               notify($ERRORS{'WARNING'}, 0, "failed to execute ssh command to 
retrieve licensing information");
+               return;
+       }
+       
+       return 1;
+}
+
+#/////////////////////////////////////////////////////////////////////////////
+
 =head2 get_license_status
 
  Parameters  : None
@@ -750,16 +790,20 @@ sub deactivate {
                return;
        }
        
-       my $management_node_keys     = $self->data->get_management_node_keys();
-       my $computer_node_name       = $self->data->get_computer_node_name();
-       my $system32_path = $self->get_system32_path();
+       # Clear the product key from the registry
+       $self->run_slmgr_cpky();
        
+       # Clear the KMS address from the registry
+       $self->run_slmgr_ckms();
+       
+       # Set SkipRearm=1 so the rearm count isn't decremented
        my $registry_string .= <<'EOF';
 Windows Registry Editor Version 5.00
 
 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SL]
-"KeyManagementServicePort"=-
-"KeyManagementServiceName"=-
+"SkipRearm"=dword:00000001
+
+[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows 
NT\CurrentVersion\SoftwareProtectionPlatform]
 "SkipRearm"=dword:00000001
 EOF
 
@@ -772,10 +816,6 @@ EOF
                return 0;
        }
        
-       $self->run_slmgr_cpky();
-       
-       $self->run_slmgr_ckms();
-       
        return 1;
 }
 
@@ -1511,9 +1551,12 @@ Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State]
 "ImageState"="IMAGE_STATE_COMPLETE"
 
+[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\Sysprep\\Generalize]
+"{82468857-ad9b-1a37-533f-7db889fff253}"=-
+
 [-HKEY_LOCAL_MACHINE\\SYSTEM\\Setup\\Status]
 EOF
-       
+
        # Import the string into the registry
        if ($self->import_registry_string($registry_string)) {
                notify($ERRORS{'OK'}, 0, "reset Windows setup state in the 
registry");
@@ -1523,6 +1566,9 @@ EOF
                return 0;
        }
        
+       # Display licensing information
+       $self->run_slmgr_dlv();
+       
        # Run Sysprep.exe, use cygstart to lauch the .exe and return immediately
        my $sysprep_command = '/bin/cygstart.exe cmd.exe /c "' . 
$system32_path_dos . '\\sysprep\\sysprep.exe /generalize /oobe /shutdown 
/quiet"';
        my ($sysprep_status, $sysprep_output) = 
run_ssh_command($computer_node_name, $management_node_keys, $sysprep_command);


Reply via email to