lørdag, januar 23, 2021

Kalde CMD 64bit fra win32 problem

Daily Rush Debat Programmering Kalde CMD 64bit fra win32 problem

  • Forfatter
    Emne
  • #0

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    Ved ikke helt om de er bedst placeret her i programmering.

    Jeg har et 32bit GUI som koere en .bat fil. mit problem er at den bat fil bliver koert i en 32 bit CMD miljoe hvilket automatisk stopper visse funktioenr og programmer fra et bliver koert fra denne .bat file.
    almindelig dbl click paa .bat filen virker fint da den nu bliver koert i en 64bit cmd

    Eksempelvis.
    %PROCESSOR_ARCHITECTURE% sat til X86 sa jeg kan ikke kigge her for at se om det er en 64 bit elelr 32bit windows

    Jeg kan ikke koere msg.exe funktionen i windows 64bit

    jeg kan ikke koere %windir%\system32\MdSched.exe i windows 64bit

    Hvad hulen kan jeg goere for at sikre mig at at en .bat fil bliver tvunget til at start med en 64 bit cmd, uden at andre noget i windows (skal kunne kore paa andres systemer

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

Viser 14 kommentarer - 1 til 14 (af 14 i alt)
  • Forfatter
    Kommentarer
  • #1

    roadrunnah
    Bruger
    14.414 indlæg
    Offline

    hvis man ser på powershell så ligger 32 bit’en i syswow64-mappen, og 64 bit ligger i windows\system. ved ikke om det samme gælder for CMD.

    32-bit PowerShell C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe

    64-bit PowerShell C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Mht til det andet, kan du ikke lave en start.bat, som styrer processerne ved at åbne nye cmd’s vinduer i elevated som udfører scriptsne i de rigtige 32/64 bits.

    Det har jeg arbejdet med flere scripts i powershell, som udfører det på den måde.

    DAMN YOU Clicker Heroes!

    #2

    BattleR
    Bruger
    100 indlæg
    Offline

    Hvis du nu kalder bat-filen via en specifik cmd.exe. Ex. %systemroot%\system32\cmd.exe sven_bent.bat . Det burde være 64-bit versionen af cmd.
    Det er muligt du er nødt til at bruge %systemroot%\sysnative\cmd.exe da Windows har det med at redirecte fra system32 til sysWOW64.

    #3

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    #2 +#1
    takker for feedback men glemte at notere et issue

    mit kald til bat .bat file kan ikke indeholder Set variabler.

    men jeg gaetter paa jeg kan kalde en bat som kalder en cmd til at kore end anden bat.

    jeg proever.

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

    #4

    Holger-IST-
    Bruger
    6.970 indlæg
    Offline

    Du kan måske bruge en bat til at starte en vbs fil, altså:

    start.bat:
    CScript run.vbs
    pause

    Der kan du hvertfald bruge Set, Wscript etc.

    - Holger "A woman drove me to drink and I didn't even have the decency to thank her." - W. C. Fields

    #5

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    feedback
    jeg har provet at lave:

    -en batch fil der starter en batcg fil direkte
    Nix

    – en batch filer der starter en batch fil ved start commando
    Nix

    – en batch filer der starter en batch fil med call
    Nix

    – starte CMD direkte fra %windir%\system32\cmd.exe og saa starte min batch fil derinde
    Nix

    -rename .bat til .cmd
    Nix

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

    #6

    Fisker
    Bruger
    12.648 indlæg
    Offline

    #5 Har du forsøgt at køre %systemroot%\sysnative\cmd.exe? Som #2 skriver når du kører cmd i et 32-bit miljø så uanset hvad du gør bliver 32-processer altid omdirigeret til syswow64.

    fx %systemroot%\sysnative\cmd.exe /c mdsched.exe burde løse dit problem.

    #7

    TormDK
    Bruger
    14.794 indlæg
    Offline

    99% af de posts på nettet jeg har kunne finde anbefaler man bruger PowerShell til den form for scripting du har gang i.

    En mulig workaround kan være ; clicky clicky

    #8

    Fisker
    Bruger
    12.648 indlæg
    Offline

    #7 Det er lidt åndsvagt at bruge et workaround når Microsoft har en officiel løsning der gør det samme.

    At powershell er overlegent er selvfølgelig rigtigt nok, men løser heller ikke problemet.

    #9

    TormDK
    Bruger
    14.794 indlæg
    Offline

    #8 Du linker ikke til en KB artikel, så kan ikke lige se hvor den officielle løsning er

    #10

    Fisker
    Bruger
    12.648 indlæg
    Offline
    #11

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    %systemroot%\sy­snative\ var svaret ihvetfald til noget af det.

    jeg takker for info #2 & #6

    jeg behover slet ikke koere cmd da mit ting jeg vil starter ligger i system32
    saa jeg aendrede bare

    %windir%\system32\MdSched.exe til
    %systemroot%\sy­snative\MdSched.exe

    et hurtigt side spoergsmal

    hvornaar er der forskel paa %windir% og %systemroot% de ser ud til at referere til samme path

    bemakr mit target miljoe kun er 64bit men gerne xp 64bit hvis det har nogen effect paa %systemroot% vs %windir%

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

    #12

    roadrunnah
    Bruger
    14.414 indlæg
    Offline

    #11, jeg vil mene at windir er et levn fra win98, og systemroot kom med winnt.

    Havde aldrig set “%windir%\Sysnative” variablen før

    DAMN YOU Clicker Heroes!

    #13

    Sven_Bent
    Bruger
    25.996 indlæg
    Offline

    #12
    saa %systemroot%/sysnative burde virke fint med winxp 64 ?

    — edit —

    Yup du havde ret

    http://en.wikipedia.org/wiki/Environment_variable

    %systemroot$ virker under winxp og win2k

    Funny jeg har altdi brugt %windir%

    men umiddelbart er de altid ens efter hvad jeg kan laese. %systemroot% bliver dog opretter foer %windir% under installation soo %systemroot% er nok bedst at bruge generelt

    Sven Bent - Dr. Diagnostic
    www.TechCenter.DK

    #14

    Fisker
    Bruger
    12.648 indlæg
    Offline

    #13 sysnative blev indført i Vista, der skulle dog vist være et hotfix der tilføjer det til XP.

Viser 14 kommentarer - 1 til 14 (af 14 i alt)
  • Du skal være logget ind for at kommentere på dette indlæg.