From: Harald O. <har...@el...> - 2012-11-13 15:28:22
|
Am 13.11.2012 15:59, schrieb Trevor Davel (Twylite): > On 2012/11/13 10:04 AM, Harald Oehlmann wrote: >> Tcl8.6 is installed in: >> c:\programme\tcl8.6 >> This folder is mapped by the windows vista magic to: >> c:\program files\tcl8.6 > For the unwary or unfamiliar with Windows, this means that c:\programme > is an NTFS directory junction to "c:\program files". > http://en.wikipedia.org/wiki/NTFS#Directory_junctions . > > There is a known access control problem where a user may be able to > access subdirectories of c:\programme but not list the contents of > c:\programme ; see http://support.microsoft.com/kb/969986 . If the > permissions are not set correctly then any attempt by Tcl_Init() to > access $grandParentDir may fail (running under c:\programme, but not > under "c:\program files"). I have rechecked this issue. It is also present with tcl8.5, so it is not new - my error. I tried the fixit for windows. Now the folder "Programme" is listed within a Dos Box and marked as "Link". Before, it was hidden and not accessable to the normal user. The issue disapears with this fixit. To avoid this issue from tcl (I had it also with config files and the AppFolder), I used to pass any path by "file normalize". This command will remove any those link components and will help you with many troubble in Windows: % file normalize c:/programme/tcl8.6 C:/Program Files/tcl8.6 IMHO, one should introduce a "[file normalize ]" around the generation of the parentDir variable in Line 370 of tclInterp.c: The current code is: set parentDir [file dirname [file dirname [info nameofexecutable]]] to avoid this issue, one may use: set parentDir [file normalize [file dirname [file dirname [info nameofexecutable]]]] Unfortunately, I can not test this any more with my system... What are other opinions? Harald |