使用Visual Studio Installer自动创建新用户并静默用于Windows服务安装

时间:2009-03-06 15:51:05

标签: windows visual-studio-2008 windows-installer

我有一个使用Visual Studio(2008)安装程序安装的Windows服务。我想避免以系统身份运行,所以我手动1)在计算机上创建一个新的Windows帐户,2)在安装过程中输入计算机名\用户名和密码。

我希望这需要很少的用户干预,所以我有兴趣创建一个新的Windows用户并自动提供计算机名称,用户名和密码。

我将如何做到这一点?

3 个答案:

答案 0 :(得分:2)

Taken from this website

  

简单的答案是使用网络   用户/添加   (/域),但有可能   自动化不仅仅是添加   用户,也是他/她的补充   组和模板的创建   用户帐户目录结构。许多   组织有一个基本结构   用word,excel目录和一些   模板文件。这可以自动化   用基本脚本。例如

REM addnew.bat

net user %1 password /add /homedir:\\<server>\users\%1 /scriptpath:login.bat /domain
net localgroup "<local group>" %1 /add

REM repeat for local groups
net group "<groups>" %1 /add /domain

REM repeat for global groups
xcopy \\<server>\users\template \\<server>\users\%1 /e
nltest /sync /server:BDCname

REM repeat for all BDCs you might be authenticating to
sleep 20
cacls \\<server>\users\%1 /e /r Everyone

REM remove the everyone permission to the directory
cacls \\<server>\users\%1 /g %1:F /e
cacls \\<server>\users\%1 /g Administrators:F /e

答案 1 :(得分:0)

在MSI中创建自定义操作以运行“sc.exe”命令(安装在WinXP和更新的系统上)。如果您担心sc.exe可能不在系统上,请将其包含在MSI中,二进制表中,或随产品一起安装。

在MSI创建服务后,让自定义操作运行以下内容(修改您自己的用户/通行证):

  

sc config the_service_name obj =    thedomain \ johndoe 密码= stackoverflow

但请注意,以明文形式直接在MSI中存储密码是一个非常糟糕的主意。

一个简单(和基本)的解决方案是使用free tool CPAU加密上面的整个sc命令。您将从您自己的系统加密此命令(使用CPAU),然后将此编码的字符串传递给CPAU(您需要将其包含在MSI中,或者在您的自定义操作中安装在系统上)。 CPAU将解码您传入的字符串,该字符串将解码为上面的sc命令,并将更安全地在服务上设置用户名和密码。

答案 2 :(得分:-2)

我认为这会危及用户的安全,如果允许服务应用程序执行此操作,这也是一种不好的做法。它还会破坏当前的安全凭证。

据我所知,任何类型的Windows服务都运行一个应该是后台任务的任务,它总是在后台运行。而且它总是以这样的意图创建:运行后台任务并且它始终在运行,因此需要用户许可的任何类型的危险操作(即用户必须知道),例如创建新用户。

如果我没有弄错,那么无论如何,您的服务应用程序将始终创建新用户而无需任何通知,因为Windows服务始终在后台运行且没有任何UI。因此,在应用程序可维护性方面,也不建议这样做。更不用说调试Windows服务对我们很多人来说很难。