|  | @@ -35,7 +35,27 @@ bool cmGetFilenameComponentCommand
 | 
	
		
			
				|  |  |    
 | 
	
		
			
				|  |  |    std::string result;
 | 
	
		
			
				|  |  |    std::string filename = args[1];
 | 
	
		
			
				|  |  | -  cmSystemTools::ExpandRegistryValues(filename);
 | 
	
		
			
				|  |  | +  if(filename.find("[HKEY") != filename.npos)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +    // Check the registry as the target application would view it.
 | 
	
		
			
				|  |  | +    cmSystemTools::KeyWOW64 view = cmSystemTools::KeyWOW64_32;
 | 
	
		
			
				|  |  | +    cmSystemTools::KeyWOW64 other_view = cmSystemTools::KeyWOW64_64;
 | 
	
		
			
				|  |  | +    if(this->Makefile->PlatformIs64Bit())
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      view = cmSystemTools::KeyWOW64_64;
 | 
	
		
			
				|  |  | +      other_view = cmSystemTools::KeyWOW64_32;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    cmSystemTools::ExpandRegistryValues(filename, view);
 | 
	
		
			
				|  |  | +    if(filename.find("/registry") != filename.npos)
 | 
	
		
			
				|  |  | +      {
 | 
	
		
			
				|  |  | +      std::string other = args[1];
 | 
	
		
			
				|  |  | +      cmSystemTools::ExpandRegistryValues(other, other_view);
 | 
	
		
			
				|  |  | +      if(other.find("/registry") == other.npos)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +        filename = other;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |    std::string storeArgs;
 | 
	
		
			
				|  |  |    std::string programArgs;
 | 
	
		
			
				|  |  |    if (args[2] == "PATH")
 |