Desidero che il mio programma venga eseguito in modalità 32 bit se in un sistema operativo a 32 bit o 64 bit se è in un sistema operativo a 64 bit. Questo programma è stato creato con il convertitore Bat To Exe v2.1.4, quindi è fondamentalmente un file batch. Normalmente quando eseguo un file batch su un sistema operativo a 32 bit viene eseguito in modalità a 32 bit e quando lo eseguo su un sistema operativo a 64 bit viene eseguito in modalità a 64 bit, non è vero? Il problema è, usando Bat To Exe Converter v2.1.4 Posso scegliere se il programma è 32 o 64 bit. Quindi devo scegliere 32 oppure non penso che funzionerà su un sistema operativo a 32 bit. Ho provato a utilizzare i file .vbs per riavviare il programma utilizzando . Run e .ShellExecute ma il risultato è stato l'architettura è uguale a quella impostata nel convertitore. Ho anche provato cmd /c
e %WINDIR%\System32\cmd.exe /c
e anche %WINDIR%\SysWOW64\cmd.exe /c
ma non sono riuscito a trovare un modo per farlo. Uso Windows 8.0 x64 e il mio VM è Windows 8.1 x64.Come eseguire un file batch in modalità 64 bit da un file batch in modalità 32 bit
risposta
c:\windows\sysnative
Fornisce accesso a System32 per programmi a 32 bit.
32 bit
C:\Windows\System32 accesses syswow64
c:\windows\sysnative accesses System32
64 bit fa solo ciò che è detto, accedere alle cartelle direttamente - ad esempio C: \ windows \ system32 accede System32 e C: \ windows \ syswow64 accessi Syswow64.
Il punto è che dovresti scrivere solo un programma a 32 bit. I programmi a 64 bit sono per lo più a 32 bit interni (solo gli indirizzi di memoria sono a 64 bit, tutto il resto rimane a 32 bit). 64 bit è per applicazioni server. Usa 32 bit per i programmi generali.
EDIT
32 programmi bit sono a 32 bit con una modalità di indirizzamento a 64 bit di cui 32 bit (indirizzo di base è sempre 0 in Windows) sono utilizzati in modo che solo 32 bit (offset) è richiesto per gli indirizzi di memoria .
64 I programmi bit sono a 32 bit con indirizzo di memoria di offset a 64 bit (non conosco le dimensioni dell'indirizzo di base in modalità 64 bit poiché sono sempre 0 e sono irrilevanti da decenni). Un programma a 64 bit può diventare un programma completo a 64 bit, semplicemente usando le istruzioni a 64 bit quando lo si sceglie, generalmente per le attività di elaborazione scientifica o video. Ma a 64 bit tutto mastica troppa memoria e le librerie di Windows e di altro prevedono valori a 32 bit.
Il principio generale è che non è necessario fare nulla per raggiungere i propri compiti. Le persone si mettono nei guai quando iniziano a pensare a 32 bit/64 bit. Se ignori il testimone, Microsoft ha messo tutto il lavoro per farlo funzionare.
Se si digita iexpress nella finestra di dialogo Start - Esegui (Winkey + R), sarà possibile creare il proprio bat2exe.
Si potrebbe utilizzare in seguito nella parte superiore del file batch:
@echo off
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%"=="" set "SystemPath=%SystemRoot%\Sysnative"
Dopodiché è necessario chiamare ogni applicazione console nella directory System32 di Windows con %SystemPath%
nel file batch, ad esempio %SystemPath%\findstr.exe
. Naturalmente è anche possibile avviare cmd con %SystemPath%\cmd.exe
per eseguire sempre l'interprete della riga di comando a 64 bit all'interno del file batch.
Come funziona?
La variabile di ambiente SystemPath viene impostata prima nella directory System32 di Windows.
Il file batch compresso in un eseguibile a 32 bit esegue ora tutte le applicazioni console effettivamente dalla directory System32 su Windows a 32 bit, ma dalla directory %SystemRoot%\SysWOW64
su Windows a 64 bit.
Pertanto, il file batch controlla se la variabile di ambiente ProgramFiles (x86) esiste che è il caso solo su Windows x64. Pertanto, la condizione sulla terza riga è falsa su Windows x86 e SystemPath non viene modificato. Ma SystemPath viene modificato in %SystemRoot%\Sysnative
in Windows a 64 bit per chiamare le applicazioni in %SystemRoot%\System32
da eseguibile a 32 bit rispettivamente cmd.exe
senza reindirizzamento a %SystemRoot%\SysWOW64
.
Per ulteriori dettagli, vedere l'articolo File System Redirector in Microsoft Developer Network (MSDN).
Ma meglio sarebbe quello di farlo tutti dentro il file eseguibile a 32 bit che estrae il file batch per %TEMP%
ed eseguirlo sia con
%SystemRoot%\System32\cmd.exe /C "%TEMP%\ExtractedBatch.bat"
per Windows a 32 bit, dove variabile d'ambiente ProgramFiles (x86) non esiste o con
%SystemRoot%\Sysnative\cmd.exe /C "%TEMP%\ExtractedBatch.bat"
a 64 bit di Windows.
Ecco un altro codice che può essere utilizzato in cima a un file batch per eseguire sempre le applicazioni della console a 64 bit indipendentemente dall'avvio su Windows x64 con 32 bit o con 64 bit .
@echo off
set "SystemPath=%SystemRoot%\System32"
if not "%ProgramFiles(x86)%"=="" (
if exist %SystemRoot%\Sysnative\* set "SystemPath=%SystemRoot%\Sysnative"
)
In Windows x64 è inoltre controllato se ci sono file in %SystemRoot%\Sysnative
. In questo caso il file batch viene eseguito con 32-bit cmd.exe
e solo in questo caso è necessario utilizzare solo %SystemRoot%\Sysnative
. Altrimenti %SystemRoot%\System32
può essere utilizzato anche su Windows x64 come quando il file batch viene avviato con 642 bit cmd.exe
, questa è la directory contenente le applicazioni della console a 64 bit.
Nota: %SystemRoot%\Sysnative
non è una directory. Non è possibile cd
a %SystemRoot%\Sysnative
o utilizzare if exist %SystemRoot%\Sysnative
- 1. Come si esegue un VBScript in modalità a 32 bit su un computer a 64 bit?
- 2. Eseguire client Oracle in modalità a 32 bit su un computer a 64 bit
- 3. Come utilizzare PyCharm in modalità 32 bit
- 4. Come si compila openSSL in modalità a 32 bit su un sistema a 64 bit?
- 5. Come accedere alla modalità 64 bit su un x86_64
- 6. Come eseguire un file batch da java?
- 7. run Matlab in modalità batch
- 8. Includere un file batch in un file batch
- 9. Intellij idea 32 bit vs 64 bit velocità e prestazioni
- 10. Accesso a file da 2,3,4 GB in processo a 32 bit su Windows a 64 bit (o 32 bit)
- 11. 64 bit per divisione 32 bit
- 12. Posso eseguire un assembly C# (dll) come 32 bit da un'applicazione a 64 bit?
- 13. Interop da 64 a 32 bit - come?
- 14. Come avviare un processo a 64 bit da un processo a 32 bit
- 15. Eseguire un file batch in una nuova finestra dal batch?
- 16. Come eseguire un'applicazione .NET a 32 bit in un ambiente a 64 bit?
- 17. qualcuno può dirmi come eseguire un file batch da Notepad ++
- 18. Compatibilità Java 32-bit vs 64-bit
- 19. Inno-setup 32 bit e 64 bit in uno
- 20. Come eseguire una JVM a 32 bit su un sistema Linux a 64 bit?
- 21. iPhone OS 64 bit o 32 bit?
- 22. Eclipse 32 bit in esecuzione su 64 bit JVM
- 23. Test di Visual Studio Unit 32-bit e 64-bit
- 24. Come ENUM moduli in un processo a 64 bit da una a 32 bit WOW elaborare
- 25. Esiste un modo per eseguire programmi a 64 bit su un computer a 32 bit?
- 26. Port 32 bit driver di Windows a 64 bit Windows
- 27. Esegui AnyCPU come 32-bit su sistemi 64-bit
- 28. Sto sviluppando un'applicazione a 64 bit. È possibile eseguire l'applicazione a 64 bit su un sistema operativo a 32 bit?
- 29. Come ottenere la directory "programmi" a 64 bit nell'applicazione a 32 bit
- 30. Una JVM a 64 bit viene eseguita in modalità 64 bit quando non è specificata un'opzione come -d32 o -d64
Si può essere interessato a questo http://social.msdn.microsoft.com/Forums/en-US/adcae113-4758-481a-a367-60d5d14d97d6/this- is-how-to-turn-vbs-and-js-files-in-exe-files-from-the-command-line-senza-strumenti di terze parti? forum = scripting –
Ho provato iexpress sul mio sistema operativo a 64 bit e ha funzionato, ma mi chiedo se lo stesso programma potrebbe essere eseguito in un sistema operativo a 32 bit. Voglio che il mio programma funzioni in modalità 64 bit perché il registro non è accessibile con reg.exe richiamato da un file batch a 32 bit. Non è possibile aggiungere un valore a "HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Run" a meno che non eseguo direttamente il file batch o lo compili in modalità a 64 bit (o con iExpress). – SkYWAGz
Vedere 'reg flags /?' –