Windows服务的安装程序,必须以"网络服务"

时间:2016-04-06 18:50:42

标签: visual-studio-2015 installshield installshield-le

使用Visual Studio 2015,如何使用InstallShield配置安装包,以便Windows服务在"网络服务"帐户?我在Visual Studio 2013中使用了InstallShield项目,但我似乎无法在这个新版本中使用它。

如果我离开"用户名"和#34;密码"字段为空(在Installshield项目" 3 - 配置目标系统/服务"屏幕),已安装的服务配置为使用"本地系统"。

如果我输入"网络服务","网络服务"," NT_AUTHORITY \网络服务","。\网络服务"或"。\ NetworkService"作为用户名并保留密码为空,当我尝试安装服务时,出现以下错误:

Error 1923. Service [name] could not be 
installed. Verify that you have sufficient 
privileges to install system services."

在我打字时,我还没能在他们的Express Edition文档中找到与此相关的任何信息:

http://helpnet.flexerasoftware.com/isxhelp21/isxhelp21.htm#StartTopic=helplibrary/FAQFilesNTService.htm

http://helpnet.flexerasoftware.com/isxhelp21/isxhelp21.htm#StartTopic=helplibrary/ServiceSettings.htm

此博客文章讨论了此新版本中用于创建服务安装程序的更改:

http://blogs.flexerasoftware.com/installtalk/2014/10/updated-support-creating-an-installation-that-installs-windows-services-.html

我之前的安装程序必须使用"旧方法使用安装程序类",因为我的项目确实有一个安装程序类,它指定NetworksService作为要运行的用户。 (讨论这种一般不推荐的方法的文章的链接被打破了。)

据我所知,新的Express Edition似乎忽略了我的安装程序类,我还没有找到如何回到过去很脆弱的旧方法,而且通常不会。推荐"

2 个答案:

答案 0 :(得分:1)

我知道如何使用InstallShield Premier执行此操作。

首先,在属性管理器中定义一个属性:

SGNETSER    NT AUTHORITY\NETWORK SERVICE

enter image description here

然后,在“服务”中,创建一项新服务,并在“用户名”中输入以下内容:

[SGNETSER]

enter image description here

这对我有用!

答案 1 :(得分:0)

我还没有找到有关如何使用Visual Studio 2015中的InstallShield LE(Express Edition)实现此目的的任何信息。

由于我的服务仅部署到单个服务器,因此我的需求并不过分复杂。我已经在我的Windows服务项目中添加了一个项目安装程序类,如此处所述{&#34}在服务中添加安装程序"部分。这允许您选择"网络服务" user,作为ServiceProcessInstaller中的属性。

如"安装服务"部分,我用安装脚本编写:

%WINDIR%\Microsoft.NET\Framework64\[framework_version]\installutil.exe MyService.exe

卸载可以通过以下方式完成:

%WINDIR%\Microsoft.NET\Framework64\[framework_version]\installutil.exe /u MyService.exe

这些命令必须以管理员身份运行,否则您将收到错误。