2017-05-01 51 views
0

我有一個PowerShell腳本,我用NSIS腳本包創建的.exe爲什麼64位進程寫入32位註冊表配置單元

PS腳本HKEY_LOCAL_MACHINE\SOFTWARE\FolderName

寫入值。然而,我注意到,它實際上是寫HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\FolderName

我在64位操作系統上。默認的Hive應該是64位,我沒有設置或將註冊表重定向到32位配置單元。

NSIS可執行寫入32位Hive。 如果我在ISE中運行PS腳本,它將寫入64位配置單元,如所示。

所以,我不知道爲什麼它包裝在NSIS中時寫在WOW6432Node下。我需要看什麼?

+0

默認配置單元不取決於操作系統的位元,而是來自過程位元。 NSIS很可能調用32位PowerShell。 – PetSerAl

+0

@PetSerAl我認爲你是對的。在研究過程中,我注意到了這一點,但並不確定,因爲我對PS/NSIS非常陌生。我怎樣才能從64位實例調用它? – Omar

+0

我對NSIS並不熟悉,所以在這裏我無法幫到你。 – PetSerAl

回答

1

如果你正在運行64位機器的腳本,這將工作。

${If} ${RunningX64} 
     ${DisableX64FSRedirection} 
    ${EndIf} 

    # put your code here 

    ${If} ${RunningX64} 
     ${EnableX64FSRedirection} 
    ${EndIf} 
0

按我的知識,NSIS使用兩個的Win32 API執行過程的ShellExecuteCreateProcess的

如果你的操作系統是64位,則兩者可以運行64個程序(64) NSIS 32位進程。

你遇到的問題是因爲它可能調用了一個32位的PS。所以仔細檢查那部分。

相關問題