Оболочка виндов тут при чём? Винда устанавливает переменные окружения, а т. к. переменные окружения доступны ещё с DOS режима:
Н-р Turbo/Borland/FreePascal - вывод всех переменных окружения:
uses dos;
var i:integer;
begin
for i:=1 to EnvCount do WriteLn(EnvStr(i)) ;
end.
Вывод конкретной переменной окружения:
GetEnv(envvar: string) : string
н-р WriteLn(GetEnv('SystemRoot'));
Delphi:
Если через переменные окружения можно задействовать
GetEnvironmentVariable(const Name: string) из Sysutils
Или (что лучше) WinAPI
GetWindowsDirectory:
http://msdn.microsoft.com/ru-ru/library/ms724454(v=vs.85).aspx
GetSystemDirectory:
http://msdn.microsoft.com/ru-ru/library/ms724373(v=vs.85).aspx
Возможно будет интересна SHGetFolderPath (функция возвращает "специальную папку" по номеру) - н-р мои документы.
В т. ч. может получить и Windows
http://msdn.microsoft.com/ru-ru/library/bb762181(v=vs.85).aspx
P.S: Естественно если в Pascal открывать файл указывая %переменная_окружения% работать и не будет - такие "фишки" расширяются автоматом н-р в .bat/.cmd файлах, но не в Pascal