【发布时间】:2012-02-02 00:45:11
【问题描述】:
我需要让用户输入他们希望将由我的 Windows 服务生成的文件存储在哪里。
我在想我可以通过在我的服务启动事件中将用户的输入读入一个变量来做到这一点?这个变量稍后会在我的 xml 编写器中使用。
这可能吗?或者有更好的方法吗?
【问题讨论】:
标签: xml vb.net windows-services windows-installer user-input
我需要让用户输入他们希望将由我的 Windows 服务生成的文件存储在哪里。
我在想我可以通过在我的服务启动事件中将用户的输入读入一个变量来做到这一点?这个变量稍后会在我的 xml 编写器中使用。
这可能吗?或者有更好的方法吗?
【问题讨论】:
标签: xml vb.net windows-services windows-installer user-input
Windows 服务无法再与桌面交互。他们永远不应该有,因为这是一个巨大的安全漏洞。
正确的设计是在您的安装程序中放置一个自定义对话框,以输入来自用户的值,该值存储在安全的自定义公共属性中。然后使用此属性更新注册表值或 xml 键/值对类型属性。然后重构您的服务类以将该资源用作配置变化点。
关键是配置设置应该在您的服务尝试启动之前很久就设置好了。
【讨论】:
如果您想做任何需要服务 UI 的事情,请停止。这不是一个好主意,并且非常不鼓励。据我所知,人们会创建一个单独的程序来修改 Windows 服务设置,然后重新启动服务。现在,如果您只是在寻找一种获取非硬编码信息的方法,我会使用 app.config 文件来存储设置,然后在服务启动时引用它。我也看到其他人也使用注册表,但我不能告诉你哪种方式更好。这是一个链接http://msdn.microsoft.com/en-us/library/ms379611(v=vs.80).aspx,其中包含很多关于 My.Settings 的信息,即使它有点过时。创建设置后,您只需要在 onstart 事件期间引用它。所以你可以这样做:
dim filePath as string = My.Settings.FilePath
HTH
韦德
【讨论】: