Charles Henry was the third child and only surviving son from the second marriage of Charles IV, Duke of Lorraine (there had been no children from the first marriage). This second marriage was annulled by the church because the separation between the Duke and his first wife, Nicole de Lorraine, had never been accepted by Rome. For this, Charles Henry had no rights to the title of Duke, and the title went his uncle. In 1669 he married his cousin, Anne-Elisabeth de Lorraine-Elbeuf, and had only one son, Charles Thomas (1670-1704), Prince of Vaudemont. This son was killed in battle near Ostiglia.
An exile like his father, Prince Charles Henry served in the Spanish-Habsburg army against France. He fought many battles, and in 1675 he was made a knight in the Order of the Golden Fleece. He served in the Nine Years' War in Flanders under William III of England.
In 1698 he was appointed Governor of Milan.
In 1700 the last Spanish-Habsburg king, Charles II, died. Charles was replaced by Louis XIV's grandson, Philip, duc de Anjou, triggering the War of Spanish Succession in which the territory around Milan was one of the major battlefields. Prince Charles Henry first accepted the new king as sovereign of Lombardy, but he was not trusted: Saint Simon suggests he passed on military information to the enemy. It is a fact that his son, Charles, was an Austrian commander.
After the Battle of Turin the French and Spanish were forced to withdraw from Italy, and Prince Charles Henry signed a treaty with the Imperial commander, Prince Eugene of Savoy, putting Lombardy under Austrian rule.
He died childless at the age of 74.