【发布时间】:2015-07-05 15:03:03
【问题描述】:
我正在创建一个 Windows 服务,它假设在特定表中查找数据,然后根据状态处理记录。
我想在使用 installutill 作为参数安装服务时传递数据库凭据并将它们保存在注册表中。我曾尝试使用下面的代码这样做,但在“OnBeforeInstall”事件中不断出现错误。
我认为要么是我错误地传递了参数,要么是我在错误的事件中编写代码。需要你的帮助来弄清楚我做错了什么。
protected override void OnBeforeInstall(IDictionary savedState)
{
base.OnBeforeInstall(savedState);
_eventLog.WriteEntry("OnBeforeInstall Started");
try
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\RyteRMS");
if (key != null)
{
_eventLog.WriteEntry("Write data to registry key");
key.SetValue("DBTYPE", this.Context.Parameters["dbtype"].ToString()); // This throws error, I am assuming as the above event entry is visible.
key.SetValue("DATASOURCE", this.Context.Parameters["datasource"].ToString());
key.SetValue("USERID", this.Context.Parameters["userid"].ToString());
key.SetValue("PASSWORD", this.Context.Parameters["password"].ToString());
key.SetValue("DBNAME", this.Context.Parameters["dbname"].ToString());
key.Close();
}
}
catch (Exception ex)
{
_eventLog.WriteEntry(ex.Message);
}
_eventLog.WriteEntry("OnBeforeInstall Finished");
}
我在命令提示符下写这个: installutil RMSBGService.exe /dbtype=sqlserver /datasource=hitin-lt /dbname=rms /userid=admin /password=passw0rd
错误:“对象引用未设置为对象的实例。”
附:我不知道如何调试 Win 服务,所以我使用事件日志记录每一件事。
【问题讨论】:
标签: c# asp.net windows-services registry installutil