[Windows]在64位的環(huán)境确垫,32位的程序調用bat腳本報錯

在64位的環(huán)境隔披,32位的程序調用bat腳本執(zhí)行cluster.exe 提示 “‘cluster’不是內部或外部命令...”

解決辦法是加入 “cd /d C:\Windows\Sysnative”


問題描述:寫了一個2_test.exe 程序調用1.bat腳本收津, 單獨執(zhí)行1.bat腳本的時候可以運行裳扯,但是通過2_test.exe調用1.bat腳本時無法運行。

2_test.exe代碼:
<code>
int _tmain(int argc, _TCHAR* argv[])
{
system("1.bat");
system("pause");
return 0;
}
</code>

1.bat腳本代碼:
<code>
cluster node /status
</code>

執(zhí)行的結果是:

aa10b674-9915-4842-b274-79620a28d807.png

產生問題的原因是 :32位的程序在64位的環(huán)境中調用cmd時噪珊,cmd是調用到SysWOW64中cmd.exe執(zhí)行晌缘,而不是調用的System32中的cmd.exe。而SysWOW64中cmd.exe中是沒有cluster.exe 這個命令的痢站。

在SysWOW64中的cmd.exe執(zhí)行“cluster node”的結果:

0de41497-5374-4192-963d-75bf362b3642.png

在System32中的cmd.exe執(zhí)行“cluster node”的結果:

0b7044a9-006b-4d77-9d6f-44c1953b1b21.png

解決辦法:在調用的腳本中加入 “cd /d C:\Windows\Sysnative”枚钓, 調用 System32中的cmd.exe

1.bat 腳本修改:
<code>
cd /d C:\Windows\Sysnative
cluster node /status
</code>

運行結果:

fb9b6b9c-a998-4e1e-9bfa-ec015afc123b.png

參考資料

  1. http://stackoverflow.com/questions/949959/why-do-64-bit-dlls-go-to-system32-and-32-bit-dlls-to-syswow64-on-64-bit-windows
  2. http://www.samlogic.net/articles/sysnative-folder-64-bit-windows.htm
  3. http://blog.csdn.net/fly2leo/article/details/11620273
  4. https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx
  5. https://blogs.msdn.microsoft.com/tianlin/2011/10/26/syswow64/
  6. https://zhuanlan.zhihu.com/p/22311533?refer=jilinxiaohuo

附錄
Wow64,全稱是32bit Windows On 64bit Windows(64位Windows上的32位Windows)瑟押。

你也可以這樣理解,雖然整個系統是運行在64位模式星掰,但如果一個應該程序是32位的多望,Windows會在64位的基礎上,加載一個“32位的Windows”氢烘。這樣怀偷,這個32位應用程序就以為自己是運行在32位的系統之上的。

于是播玖,你也可以想象椎工,這就意味著,64位的Windows,不但帶有64位操作系統應有的系統文件维蒙,還帶有32位系統應有的系統文件掰吕。

我們都知道的是,Windows系統的主要系統文件都是放在一個叫做System32的文件夾中的颅痊。為了能同時放下兩套系統文件殖熟,Windows會在64位的系統上,增加了一個文件夾斑响,叫SysWow64菱属。

這便有了一個問題,System32和SysWow64里面舰罚,哪個放的是64位的系統文件纽门,哪個放的是32位的系統文件呢?

在64位中营罢, System32 存放的是64位的系統文件赏陵, SysWow64存放的是32位對應的系統文件。

此外愤钾,為了保證32位應用程序不與64位應用程序相沖突瘟滨,除了System32文件夾外,注冊表也需要為32位和64位提供兩套能颁,也需要讓32位的應用程序在必要時重定向杂瘸。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伙菊,隨后出現的幾起案子败玉,更是在濱河造成了極大的恐慌,老刑警劉巖镜硕,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件运翼,死亡現場離奇詭異,居然都是意外死亡兴枯,警方通過查閱死者的電腦和手機血淌,發(fā)現死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來财剖,“玉大人悠夯,你說我怎么就攤上這事√煞兀” “怎么了沦补?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長咪橙。 經常有香客問我夕膀,道長虚倒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任产舞,我火速辦了婚禮魂奥,結果婚禮上,老公的妹妹穿的比我還像新娘庞瘸。我一直安慰自己捧弃,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布擦囊。 她就那樣靜靜地躺著违霞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瞬场。 梳的紋絲不亂的頭發(fā)上买鸽,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音贯被,去河邊找鬼眼五。 笑死,一個胖子當著我的面吹牛彤灶,可吹牛的內容都是我干的看幼。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幌陕,長吁一口氣:“原來是場噩夢啊……” “哼诵姜!你這毒婦竟也來了?” 一聲冷哼從身側響起搏熄,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤棚唆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后心例,有當地人在樹林里發(fā)現了一具尸體宵凌,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年止后,在試婚紗的時候發(fā)現自己被綠了瞎惫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡译株,死狀恐怖微饥,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情古戴,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布矩肩,位于F島的核電站现恼,受9級特大地震影響肃续,放射性物質發(fā)生泄漏。R本人自食惡果不足惜叉袍,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一始锚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喳逛,春花似錦瞧捌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至典蝌,卻和暖如春曙砂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骏掀。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工鸠澈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人截驮。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓笑陈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親葵袭。 傳聞我的和親對象是個殘疾皇子涵妥,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容