如何使用instreg.exe和instsvc.exe(用于在Windows上安装Firebird的命令行工具)
如何使用instreg.exe和instsvc.exe
作者:原作者:Alex Peshkov (peshkoff at mail.ru),修订者:Olivier Mascia (om at tipgroup.com)
注意 :: 为了解决包含空格或特殊(非ASCII)字符的长路径可能带来的问题,这些工具不再将RootDirectory作为命令行参数。两个二进制文件必须安装在(或复制到)Firebird根目录下的/bin目录中。
(根目录 == 安装firebird.conf和security2.fdb的目录根。)
例如,如果它们位于C:\FB20.in,则根目录将被推断为C:\FB20。
INSTREG.EXE
此实用程序的目的是为Firebird安装注册表键。由于其任务是将RootDirectory路径推断为其自身位置正上方的目录,并将此路径作为绝对路径写入注册表,因此instreg.exe必须安装在Firebird根目录的/bin子目录中(见上面的注意)。
注册表键不是引擎运行所必需的;然而,许多第三方工具期望读取它才能正常工作。存储的键是
HKLM\SOFTWARE\Firebird Project\Firebird Server\Instances
并且包含一个字符串值:DefaultInstance。
此’DefaultInstance’字符串值包含安装根目录的完整路径(以反斜杠结尾)。此设置是为了在下一个版本中能够管理服务器的命名多实例而构建的。目前,唯一的一个实例接收硬编码的名称’DefaultInstance’。注册表中没有存储其他任何内容。任何版本或配置信息都由第三方工具在相应的firebird.conf文件中查找。该文件可以通过存储在…\Instances\DefaultInstance值中的根路径来定位。
用法:
instreg i[nstall]
instreg r[emove]
‘-z’可以与任何其他选项一起使用,将Firebird软件版本打印为输出的第一行。
要获取简短的文本帮助,只需不带参数调用instreg.exe。
INSTSVC.EXE
Firebird提供了一个标准例程来管理WinNT/2000/XP平台上的Firebird服务 - instsvc.exe。
控制台消息
Windows错误消息(如果有)的输出已增强,以便完成任何所需的ansi字符串到控制台窗口OEM字符集的转写。这意味着使用非英语Windows的用户将以他们的语言获得Windows系统错误消息,并带有正确的重音符号等。
与安全相关的功能
以前实现的’-login’(或-l)选项已被广泛修订和增强。现在它可以用于将服务设置为在特定用户帐户(可能在系统上具有有限权限)下运行,而不是默认的"LocalSystem"。
用法:
instsvc i[nstall] [ -s[uperserver]* | -c[lassic] | -m[ultithreaded] ]
[ -a[uto]* | -d[emand] ]
[ -g[uardian] ]
[ -l[ogin] username [password] ]
[ -n[ame] instance ]
[ -i[nteractive] ]
instsvc sta[rt] [ -b[oostpriority] ] [ -n[ame] instance ]
instsvc sto[p] [ -n[ame] instance ]
instsvc q[uery]
instsvc r[emove] [ -n[ame] instance ]
此实用程序应从Firebird安装的’bin’目录中定位并运行。
-
‘*’ 表示默认值
-
‘-z’ 可以与任何其他选项一起使用,打印版本
-
‘username’ 默认指此机器上的本地帐户。
-
如果适用,请使用格式’domain\username’或’server\username’。
示例
假设Firebird已安装(复制到其安装位置)。
Superserver和自动启动现在是默认设置。
instsvc i
instsvc install
将Superserver设置为自动启动(开机时启动)模式下的服务,在默认系统身份下运行,名为"LocalSystem"。
instsvc i -g
instsvc install -guardian
如上所述,但首先启动Guardian服务。
选项"-demand"(-d)和"-classic"(-c)允许更改默认值,因此可以将classic服务器(而不是superserver)配置为服务,并且任一服务都可以配置为按需启动而不是在开机时启动。
要移除服务
服务在移除前必须停止。这可以用3行代码自动化,但为了安全起见,最好保持原样。
instsvc r
instsvc remove
移除服务定义。如果配置了Guardian,则guardian和server服务都将被移除。
要启动和停止已安装的服务
instsvc sta
instsvc start
根据install命令配置的内容,启动服务器或Guardian + 服务器。
instsvc stop
根据install命令配置的内容,停止服务器或Guardian + 服务器。
要获取服务器状态报告
这是一个新命令:
instsvc q
instsvc query
打印一份报告,准确说明配置了什么以及如何配置,以及服务是正在运行还是已停止。
要使用安全登录功能
选项"-login"需要用户名和密码:
instsvc i -g -login user pass
这将把FB superserver配置为自动启动,带Guardian,在密码为pass的"user"身份下运行。
\* 如果包含密码,密码不应以’-‘开头。
\* 如果命令行中省略了密码,instsvc将提示输入密码。在这种情况下,输入时密码将以’*‘掩码显示。
在如上配置服务时,instsvc 自动授予指定的用户名为"Log on as a Service"的Windows操作系统权限。这是必需的,否则服务将不允许启动。除非失败,否则instsvc对此保持静默。
考虑到通过-login开关登录的用户可能是没有管理员权限的普通用户,instsvc会调整服务的默认安全描述符,以便该用户可以启动/停止/查询它们。
这对于使Guardian(也以此用户身份运行)能够启动FB服务器是必要的。该用户将无法卸载服务或更改其配置。
注意
Instsvc不会在Windows机器上创建"user"。那不是一个好主意。管理员可能希望将用户创建为本地机器的一部分或域的一部分,而instsvc没有特别需要篡夺管理员创建用户的责任。
用户需要对所有数据库和firebird.log文件具有读/写访问权限。出于安全原因,不应授予对firebird.conf和Firebird可执行文件的写访问权限。
在Windows NT/2K/XP上,通常为在域上或另一台服务器上本地定义的用户包含域或服务器前缀。在上述示例中,“user"可能采用以下形式:
DOMAIN\user 或
SERVER\user
没有前缀时,用户隐式是当前机器上的本地用户。