9
votes

Dossier System32 sur un système 64 bits

J'ai un fichier cmd qui fonctionne sur un système Vista 32 bits.

Je remarque que le code a des références au dossier du pilote System32.

Je me demande si le code pourrait potentiellement exécuter sur un système Windows 7 64 bits. Donc je suppose que ma question est Un système 64 bits contient-il un dossier System32?

Être très reconnaissant pour toutes les réponses.


2 commentaires

Cela n'appartient pas à superutilisateur?


Similaire sur SuperUserer: SuperUserSer.com/Questions/157294/...


4 Réponses :


0
votes

Windows 7 64 bit a un dossier System32.

si votre fichier sera toujours exécuté, cependant, est un problème plus complexe. Il pourrait et dépend entièrement de ce qu'il repose; Si cela s'appuie sur les conducteurs de la mauvaise manière, cela échouera car les pilotes 32 bits ne fonctionnent tout simplement pas sur des systèmes 64 bits.


2 commentaires

Merci beaucoup d'avoir pris le temps de répondre .. mais quand vous dites à compter sur les conducteurs de la mauvaise manière, que voulez-vous dire?


Sans en savoir plus sur la situation, je ne peux vraiment pas dire! Si votre code s'appuie sur une certaine technicité d'un conducteur spécifique, ce pilote pourrait être différent sous Win64, puis échoue. Pouvez-vous poster le code en question?



14
votes

Le dossier System32 dans Windows 64 bits contient réellement les fichiers 64 bits et les programmes 32 bits exécutés sous Wow64 vont généralement regarder dans System32 pour les DLL 32 bits, etc. qu'ils peuvent appeler - mais ils vont Trouvez les 64 bits à la place. Par conséquent, l'OS redirige toutes les demandes d'applications 32 bits pour le dossier System32 du dossier SYSWOW64, contenant des fichiers système 32 bits.


3 commentaires

Donc, le dossier system 32 a tous les dlls et le dossier sswow64 contient tous les dlls 32 bits ? Wtf? Pourquoi n'est-ce pas system32 pour dlls 32 bits et system64 pour dlls 64 bits ?


@ B1kmusic "L'intention était de renommer System32, mais de nombreuses applications codées dur pour ce chemin, qu'il n'était pas possible de le supprimer" Stackoverflow.com/a/950011/995714


@ B1kmusic Ne sait pas que quelqu'un sait, pourquoi mon système32 sur 64 bits contient des versions de 32 bits de CMD, SFC, Ten-là et ainsi de suite, même après avoir réinstallé Windows de MediaCreateTool?



7
votes

Windows a une technologie appelée WOW 64 (Windows-On-Windows 64 bits) qui permet aux applications 32 bits (même compilées écrites en C / C ++, etc.) à exécuter sur des fenêtres 64 bits.

Outre le dossier System32, une installation Windows 64 bits contient un dossier SYSWOW64 contenant des versions 32 bits des fichiers que vous trouverez dans System32.

Pour être clair, les références à System32 sont redirigées lors de l'exécution d'un processus 32 bits (à moins que le processus désactive cette redirection, ce qui est possible). En conséquence, si vous avez un fichier .CMD qui fait référence à System32, il va réellement lire dans le répertoire SYSWOW64.


2 commentaires

Merci beaucoup, je pense que je reçois la photo. Comment savez-vous si votre application est 32 bit?


Est-ce un script de commande-shell (fichier .cmd)? C'est l'impression que j'ai eu de votre message. Si oui, il s'exécutent n'importe où, et je ne suis pas certain de ce que vous vouliez dire par «Références à System32», mais je pensais que cela accédait directement aux fichiers. S'il s'agit d'une application compilée et que vous avez installé Visual C ++ installé, vous pouvez utiliser Lien / Dump / En-têtes .exe, et à la valeur Top sous les valeurs d'en-tête de fichier que vous verrez «machine» avec un nom entre parenthèses. Si c'est (i386), alors c'est 32 bits. J'oublie ce que X64 énumère, mais cela pourrait être (x64) ou (AMD64).



2
votes

System32 strong> est le nom du dossier contenant des fichiers système d'exploitation importants.

Les versions précoces de 64 bits Windows XP ont uniquement exécuté 64 bits. Cela a eu du sens: p>

  • Vous exécutez des applications 16 bits sur Windows 16 bits li>
  • Vous exécutez des applications 32 bits sur Windows 32 bits li>
  • Vous exécutez des applications 64 bits sur Windows 64 bits li> ul>

    et des versions précoces de Windows XP 64 bits étaient de 64 bits, et uniquement des applications exécutées 64 bits. p>

    Et puisque tous les noms de dossiers restent identiques, vous pouvez simplement recompiler votre application sous 64 bits (et ne pas avoir à modifier quoi que ce soit strong> d'autre - y compris vos chemins accidentellement codés accidentellement ), et cela fonctionnera simplement. p>

    os d'émuler 32 bits sur des fenêtres 64 bits h2>

    très rapidement, il est devenu évident que ne pouvant exécuter que 64 bits d'applications 64- Bit Windows, empêcherait certaines personnes de passer à 64 bits Windows. Donc Une couche d'émulation a été créée pour vous permettre d'exécuter des applications 32 bits Sur un système d'exploitation 64 bits. p>

    Il a été appelé wow64: Windows code> sur code> windows64 code>:

    • Cette couche d'émulation simule l'architecture X86, virtualisation de la CPU, le système de fichiers, le registre, les variables d'environnement, les fonctions d'information du système, tout ce type. li>
    • Si un programme 32 bits tente de regarder le système, il verra un système 32 bits. li>
    • Par exemple, si le programme appelle la fonction GetSysteminfo pour voir quel processeur est en cours d'exécution, on lui dit qu'il fonctionne sur un processeur 32 bits, avec un espace d'adressage 32 bits, dans un monde avec un monde 32 bits Sky et oiseaux 32 bits dans les arbres 32 bits. Li>
    • Et c'est le point de l'émulation: garder le programme 32 bits heureux en simulant un environnement d'exécution 32 bits. LI> ul>

      Le problème est où ces applications 32 bits stockent-elles tous leurs fichiers 32 bits et configurent les emplacements de leurs DLL 32 bits et chargez des fichiers de support système d'exploitation 32 bits? P>

      Nous savons déjà où Native em> Applications stockez leurs trucs. p> xxx pré>

      Ceci est tout correctement correct et droit; Si vous reconquérez simplement votre application 32 bits comme 64 bits: tout fonctionne. Tous ces emplacements sont toujours corrects. P>

      32 bits dans un monde 64 bits h2>

      Mais maintenant, car nous allons courber en arrière afin d'accueillir non-64 bits Applications, nous devons trouver quelque part pour eux d'avoir leurs anciens fichiers OS 32 bits et de stocker leurs données 32 bits et avoir leurs programmes 32 bits, avec des composants partagés 32 bits: P>

      | Native Application  | Emulated 32-bit asks for  | Is actually given         |
      |---------------------|---------------------------|---------------------------|
      | C:\Windows\System32 | C:\Windows\System32       | C:\Windows\SysWOW64       |
      | C:\Program Files    | C:\Program Files          | C:\Program Files (x86)    |
      | HKCU\Software       | HKCU\Software             | HKCU\Software\Wow6432Node | 
      
      • Si un programme 64 bits demande C: \ windows \ system32 code>, il est bien meilleur obtenir strong> 64 bits de fichiers li>
      • Si un programme 32 bits demande c: \ windows \ system32 code>, il est bien meilleur obtenir strong> Fichiers 32 bits LI> ul>

        Cela signifie que si un processus 32 bits demande forte> pour certains de ces emplacements de fichiers, Windows doit rediriger de manière transparente l'appel sur les dossiers 32 bits et les clés de registre. p>

        Si un programme 32 bits, que pense strong> il fonctionne sur un ancien système d'exploitation 32 bits, demande un emplacement 32 bits, il doit être donné le "réel "Emplacement: p>

        | Native Application  | Emulated 32-bit           |
        |---------------------|---------------------------|
        | C:\Windows\System32 | C:\Windows\SysWOW64       |
        | C:\Program Files    | C:\Program Files (x86)    |
        | HKCU\Software       | HKCU\Software\Wow6432Node | 
        
      • Créer une application 64 bits pour un système d'exploitation 64 bits LI> ul>

        Arrêtez de créer une application 32 bits, puis de vous plaindre lorsque la couche d'émulation vous entraîne de passer par l'émulation. Votre application est la mauvaise conduite oddball; corrigez-le. P> p>


1 commentaires

Une réponse à une question de plus de 8 ans! Je suis venu à la fermer et je pars avec un uppote à la place. C'est rare ... une explication agréable et compréhensible.