首页 > 解决方案 > InstallShield LaunchAppAndWait nltest

问题描述

我需要在安装过程中找出域用户输入的域控制器名称。在命令行中,我可以使用命令“nltest /dcname:”

当试图在 installshield 脚本中使用它时,我遇到了各种各样的问题。

拳头我试过这个:

strCmdLine = "/C \"nltest /dcname:" + strDomain + " \" > output.txt"; LaunchAppAndWait("cmd.exe", strCmdLine, LAAW_OPTION_WAIT | LAAW_OPTION_SHOW_HOURGLASS | LAAW_OPTION_HIDDEN);

output.txt 文件已创建但为空。

我也尝试使用LAAW_SHELLEXECUTEVERB = "runas";

接下来我尝试了这个:

strCmdLine = "/C \"c:\\Windows\\System32\\nltest.exe /dcname:" + strDomain + "\""; LaunchApplication("c:\\Windows\\System32\\cmd.exe", strCmdLine, "C:\\Windows\\System32\\", SW_NORMAL, INFINITE, LAAW_OPTION_WAIT | LAAW_OPTION_USE_SHELLEXECUTE)

我得到错误'c:\Windows\System32\nltest.exe' is not recognized as an internal or external command, operable program or batch file.,不知道为什么。

我尝试了不同 LaunchApp 命令、转义符号和引号的所有组合,但没有成功……知道如何成功存储 nltest 的输出吗?

标签: command-lineinstallshield

解决方案


这是否必须在安装期间完成,或者您可以在安装应用程序启动后执行此操作?


Win32:对该 EXE 进行快速依赖项扫描会发现许多 Win32 函数和托管 API,可以使用这些函数NTDSAPI.dllLOGONCLI.DLL.

一些文档可以在这里找到:

更多功能:


System.DirectoryServices.ActiveDirectory替代托管API:.


从 C++ dll 或 Installscript 调用这些 Win32 函数应该相对容易。

快速建议:与其花很多时间在 C 风格的 API 上(这可能需要几个小时),我更喜欢掠夺 github.com 以获得可以适应的快速示例。那只是我看到的第一件有意义的事情。如果你看应该会好很多。


推荐阅读