Nsis nsExec获取IIS FastCGI设置

Nsis nsExec获取IIS FastCGI设置,nsis,Nsis,cmd中的以下命令行(admin)提供了结果,即C:\PHP\PHP.exe: %windir%\system32\inetsrv\appcmd.exe list config -section:system.webServer/fastCgi "/text:[arguments=''].fullPath" 现在我想使用nsExec::ExecToStack作为 nsExec::ExecToStack "%windir%\system32\inetsrv\appcmd.exe list con

cmd中的以下命令行(admin)提供了结果,即C:\PHP\PHP.exe:

%windir%\system32\inetsrv\appcmd.exe list config -section:system.webServer/fastCgi "/text:[arguments=''].fullPath"
现在我想使用nsExec::ExecToStack作为

nsExec::ExecToStack "%windir%\system32\inetsrv\appcmd.exe list config -section:system.webServer/fastCgi $\"/text:[arguments=''].fullPath$\""
Pop $0
Pop $1
MessageBox MB_OK $0
MessageBox MB_OK $1
它会导致“错误”。我试图找出背后的原因,并用谷歌搜索它,但没有成功地得到它的复制。 在这里,我正在寻找背后可能的原因和可能的解决办法。请将其视为geniune,并为任何遗漏表示歉意,使其成为具体问题。

试试这个

nsExec::ExecToStack ` %windir%\system32\inetsrv\appcmd.exe list config -section:system.webServer/fastCgi $\"/text:[arguments=''].fullPath$\" `

你的报价有问题

  • 要执行的命令及其路径必须在
    ExecToStack
    参数中双引号,如文档所示:

    nsExec::ExecToStack [OPTIONS] '"PATH" param1 param2 paramN'
    
  • 我看得出你在试图逃避最后一个论点的双引号。NSIS支持3种不同类型的字符串引用:双引号
    ”、单引号
    和反引号
    `
    ,它们的处理方式完全相同(不像Perl中单引号阻止字符串插值)

因此,您应该尝试使用另一个引号来调用您的命令:

nsExec::ExecToStack `"%windir%\system32\inetsrv\appcmd.exe" list config -section:system.webServer/fastCgi "/text:[arguments=''].fullPath"`

你能用
Exec
代替
nsExec::ExecToStack