Ну, да, это правда, что популярные API-вызовы для изменения каталога меняют его для процесса. ... НО ...
(1.) 16-битные программы Windows может изменить глобальный каталог; вероятно, потому что они работают в том же процессе, что и command.com. Это то, что я счастливо использовал в течение многих лет; Я полагаю, XP как-то эмулирует это? ... Но теперь Windows 7 64-битная больше не будет запускать 16-битные программы! (?)
(2.) Команды Windows и Unix "cd" могут, конечно, изменять каталоги для вызывающего процесса - предположительно потому, что они являются встроенными командами командной оболочки. Но преемникам Windows это удается, или, по крайней мере, я надеюсь PowerShell может это сделать. Все встроенные модули?
(3.) В итоге я изменил мои программы, которые раньше вызывали API, чтобы просто выдать «cd \ dst \ directory» в stdout, затем в процедуре выполните
chdirprogram> t ~ .bat
звоните T ~ .bat
Который прекрасно работает. И, конечно же, обычная задача программы каталогов изменений - обеспечить функциональность в пакетной процедуре с вычисленным адресатом. Что, конечно, вы можете делать в Unix с переменными Bash и т. Д., Но не в пакетных файлах Windows, хотя, может быть (?) В многочисленных последующих процедурах Windows, которые я не хочу использовать. ... Так как эта функциональность , очевидно, полезна, я надеялся, что кто-то знает о хитрой Windows-программе, которая это сделает. Объяснение того, что как-то неправильно для процесса, чтобы изменить каталог для вызывающего процесса, является одним из тех фальшивых, «вы не должны этого делать, и я не скажу вам, почему», извините. ... Но я думаю, что я просто буду придерживаться своих жалких маленьких пакетных файлов.