【问题标题】:What does the regserver argument to cscript/wscript do?cscript/wscript 的 regserver 参数有什么作用?
【发布时间】:2018-04-19 12:40:41
【问题描述】:

我有 seen mentions in other places 到 cscript 或 wscript 的 -regserver 参数 - 但找不到任何信息可以精确定义此选项的作用或真正澄清时'想要/需要使用它。

连内置帮助都没有提到:

λ cscript /?
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Usage: CScript scriptname.extension [option...] [arguments...]

Options:
 //B         Batch mode: Suppresses script errors and prompts from displaying
 //D         Enable Active Debugging
 //E:engine  Use engine for executing script
 //H:CScript Changes the default script host to CScript.exe
 //H:WScript Changes the default script host to WScript.exe (default)
 //I         Interactive mode (default, opposite of //B)
 //Job:xxxx  Execute a WSF job
 //Logo      Display logo (default)
 //Nologo    Prevent logo display: No banner will be shown at execution time
 //S         Save current command line options for this user
 //T:nn      Time out in seconds:  Maximum time a script is permitted to run
 //X         Execute script in debugger
 //U         Use Unicode for redirected I/O from the console

Microsoft's documentation 也没有。


注意 - 我从我链接到的一些外部文章中收集到,此选项可用于从 Windows XP 中的一些错误中恢复,也可能是 Vista。但这实际上并不能解释这个选项的作用或它存在的原因。我不认为微软事后将它作为 FIX 添加,而是人们可以利用它来解决 XP/Vista 中的任何问题。


编辑:仅仅因为两个问题具有相同/相似的答案并不会使它们重复。相同的信息可以回答多个不同的问题。被称为潜在重复的问题与脚本可执行文件没有任何关系。这个问题的价值在于使用这些工具的人实际上可以搜索并找到答案。他们不会轻易找到另一个(因为我在发布此之前广泛搜索/谷歌搜索时没有找到)。

【问题讨论】:

  • @Lankymart 我根本不是在问 RegSvr32。我问的是 wscript 的一个参数,它恰好有一个相似的名字。
  • 阅读文章。它谈论的是-regserver / /regserver 开关,它与注册 COM 可执行文件有关。它不是特定于 wscript.exe 的开关,这就是您在文档/帮助中找不到它的原因。只需阅读赞成的答案 - “EXE COM 服务器可以直接运行,所以这就是你向它们传递 /regserver/unregserver 参数的方式。” 这没有什么不同,它是同一件事,你如果您阅读答案就会意识到,因此是 dup 标志。
  • @Lankymart 谢谢我明白你的意思了。其他问题可以自行改进以使其更清楚。

标签: vbscript


【解决方案1】:

这些实际上并不是cscriptwscript 的唯一参数;相反,它们是 Windows 中任何可充当 COM 服务器的 EXE 的标准参数。

有关它们如何运作的更多详细信息,请参阅此相关问题:https://superuser.com/questions/1164298/what-actually-happens-during-regserver-unregserver

这至少是partly documented here:

如果服务器封装在 EXE 模块中,应用程序希望 注册服务器 使用命令行启动 EXE 服务器 参数 /RegServer 或 -RegServer(不区分大小写)。如果 应用程序希望注销服务器,它启动 EXE 命令行参数 /UnregServer 或 -UnregServer.

自注册 EXE 检测这些命令行参数并调用 DllRegisterServer 和 DLL 中的操作相同 DllUnregisterServer,分别注册其模块路径下 LocalServer32 而不是 InprocServer32 或 InprocHandler32。

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 2011-09-02
    • 2018-03-10
    • 2010-09-10
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2011-06-09
    • 2017-06-13
    相关资源
    最近更新 更多