Призван на военную службу в ноябре 1916 года. Служил в гренадерском полку, с августа 1917 года до конца войны — в пулемётной роте штурмового полка. Награждён Железным крестом 2-й степени.
С декабря 1918 по сентябрь 1919 года — в добровольческом полку (воевал против поляков, получил звание унтер-офицера).
В июне 1920 года Горн поступил на службу в полицию (в звании унтервахтмайстера), в 1927 году стал лейтенантом полиции, с ноября 1934 года — капитан полиции.
В октябре 1935 года перешёл на службу в армию в звании капитана, на должность заместителя командира роты мотоциклетного батальона.
С июля 1939 года — комендант штаба 19-го корпуса.
В январе-октябре 1940 — командир запасного батальона, с марта 1940 — майор.
С октября 1940 — командир пехотного батальона. Участвовал в Балканской кампании (в Сербии). В апреле 1941 года награждён Железным крестом 1-й степени и Рыцарским крестом (№ 267).
С 22 июня 1941 — на Восточном фронте (Тарнополь, Умань, Днепропетровск, Киев, Сумы, Курск).
С февраля 1942 — подполковник, командир мотоциклетного батальона 9-й танковой дивизии, награждён Золотым Германским крестом. В августе 1942 года награждён Дубовыми листьями (№ 113) к Рыцарскому кресту.
С октября 1942 — командир гренадерского полка 9-й танковой дивизии. С марта 1943 — полковник. В июне 1943 года за бои в районе Орла награждён Мечами (№ 30) к Рыцарскому кресту с Дубовыми листьями.
С ноября 1943 — начальник учебных курсов в училище танковых войск. С июля 1944 — командир 561-й народно-гренадерской дивизии (в Восточной Пруссии). С октября 1944 — генерал-майор. С апреля 1945 — командир 710-й пехотной дивизии (в Австрии).
8 мая 1945 — взят в плен американскими войсками.
В американском плену до июня 1947 года.