Из дворян. Сын знаменитого драматурга Я. Б. Княжнина. На военную службу записан в 1784, учился в кадетской роте л.-гв. Измайловского полка. 5 января 1795 выпущен капитаном в армию, 14 июля 1795 определён в 1-й морской полк. В 1797 переведён в Тенгинский мушкетерский полк, в ноябре 1799 произведён в майоры. В 1802—1803 гг. находился в отставке. В 1803 вновь принят на службу и поступил в Кексгольмский мушкетерский полк.
В 1807 г. отличился в сражениях с французами при Гейльсберге, Гутштадте и Фридланде (ранен в голову). Орденом Св. Георгия 4-го кл. № 874 награждён 20 мая 1808
Командиром Кексгольмского мушкетёрского полка назначен 13 января 1808. В полковники произведён 18 марта 1810. По сентенции военного суда 26 ноября 1810 «отставлен за беспорядки и злоупотребление доверенности к нему начальства, с тем, чтоб впредь никуда не определять» (в 1816 г. исходатайствовал перед генерал-адъютантом А. А. Закревским исключить эту запись из его формулярного списка). Вскоре был прощён и в 1811 г. назначен командиром 1-й бригады формировавшейся 27-й пехотной дивизии.
В начале 1812 г. 27-я пехотная дивизия, командиром бригады в которой был Княжнин, предназначалась для 2-й Резервной армии, но присоединилась ко 2-й Западной армии. Сражался под Красным, Смоленском. При схватке с французами за Шевардинский редут во время контратаки был «жестоко ранен в обе ноги пулями». 21 ноября 1812 за проявленное мужество получил чин генерал-майора, но из-за ран в боевых действиях участия больше не принимал.
Был вице-директором Инспекторского департамента Главного Штаба Е. И.В. с 20 января 1816 по 30 августа 1823, затем являлся членом Совета Военного министерства. 1 января 1826 произведён в генерал-лейтенанты. Похоронен на Смоленском православном кладбище в Петербурге.