Program Information File (*.pif) — небольшой файл, показывающий, как запустить DOS-программу в многозадачной операционной системе. В Windows 95 и выше эти файлы служат ярлыками на DOS-программы.
DOS-программа рассчитывает, что она полностью управляет доступной ей памятью и аппаратным обеспечением. В многозадачных ОС это не так: в одной памяти сосуществуют много разных программ, часть аппаратного обеспечения эмулируется средствами ОС, важная клавиша DOS-программы может совпадать с таковой у Windows. Потому приходится командовать многозадачной системе, как эмулировать DOS.
PIF-файлы появились в IBMTopView, потом — в проектах Digital Research вроде Concurrent DOS (причём у них можно было как держать файл информации в том же каталоге, так и внедрять информацию прямо в EXE-файл). У них файлы переняли QuarterdeckDESQview и MicrosoftWindows.
Сейчас PIF-файлы используются крайне редко из-за устаревания DOS. Тем не менее, 32-битные версии Windows всё ещё запускают DOS-программы — а значит, используют PIF-файлы. Ярлык рабочего стола для DOS-программы — это именно PIF-файл (как *.lnk для Windows-программы и *.url для веб-страницы).
Windows считает PIF-файлы «псевдоисполняемыми» (как *.bat или *.lnk). Они не ассоциированы ни с какой программой, функция ПроводникаShellExecute[3] («запустить по ассоциации»[4]) опознаёт формат и, если это PIF, запускает нужную программу с нужными настройками, если Portable Executable — запускает напрямую и т. д.[5] Из-за такой архитектуры через PIF можно распространять компьютерные вирусы[6][3][7].
Изначально PIF был двоичным файлом собственного формата. В Windows 3.0[8] поступили так: первые 369 байт[8] были от DESQView, после них — заголовок и простой блочный формат; Windows читала только те блоки, которые ей нужны. Таким образом, PIF’ы стали расширяемыми и понятными как DESQView, так и Windows. Блочный формат позволил разным версиям Windows редактировать PIF’ы и не трогать настройки других версий[9]. Windows 3.1 может работать с PIF’ами появившейся много лет спустя Windows 2000 и не терять её настроек.