2 votes

Différences d'exécution d'un programme à partir de C:\Windows par rapport à C:\Windows\system32

Appeler un programme dans l'invite de commande de Windows par un chemin absolu à partir du répertoire C:\Windows fonctionne, mais appeler ce programme à partir de C:\Windows\System32 me donne des erreurs.

  • C:\Windows>D:\pathtoexe\program.exe --> OK
  • C:\Windows\System32>D:\pathtoexe\myprogram.exe --> Se termine sans effectuer sa tâche

Le programme lit un fichier de configuration du répertoire actuel. Le fichier de configuration existe dans les répertoires Windows et System32. Si je supprime le fichier du répertoire Windows, alors appeler le programme à partir du répertoire Windows se termine avec la même erreur que si je l'appelais à partir du répertoire System32. Il ne devrait pas y avoir de problèmes d'accès au fichier :

  • C:\Windows>type config.ini--> OK
  • C:\Windows\system32>type config.ini --> OK

Le même programme avec le même fichier de configuration sur Windows Server 2003 fonctionne pour les deux répertoires !

Comment puis-je déboguer pourquoi il ne se lance pas à partir de system32 sur 2008 ?

4voto

Dale Clifford Points 331

Je suppose que vous êtes sur un système d'exploitation 64 bits, et program.exe est un programme 32 bits.

Si c'est le cas, mettez le fichier de configuration dans le répertoire windows\syswow64. C'est ce qui apparaît à un processus 32 bits comme system32.

En raison de la manière dont Windows lance les processus, ils n'héritent pas directement de leur répertoire de travail, mais effectuent l'équivalent d'un cd au démarrage. Ainsi, le processus 32 bits, lancé dans le répertoire système 64 bits, se retrouve en fait dans le répertoire système 32 bits (appelé syswow64 dans un cmd ou Explorer 64 bits).

2voto

fartheraway Points 4886

Votre application est sensible au répertoire dans lequel elle s'exécute en raison de l'attente de certains fichiers - fichiers de configuration, peut-être des dll ou des exécutables tiers - du répertoire actuel. Je suggérerais d'utiliser pstools procmon pour déterminer les fichiers exacts qui sont utilisés.

Cela peut également être un problème de 32 vs 64 bits. Procmon montrera cela aussi.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X