2011-07-30 204 views
0

我已经编写了一个使用openpop邮件客户端和retreives电子邮件的Windows服务。然后它通过主题和正文更新数据库和各种东西。它还会下载附件,并根据电子邮件的时间戳在驱动器上创建一个文件夹目录,然后按年份,然后是月份,然后是一天,然后保存该映像。所以,我在开发中使用类库项目,用于调试的Winform项目和Windows服务项目在我的机器上构建了此服务。 所有的逻辑都包含在一个Classlibrary中。我建立了库并在窗体和窗口服务中引用了dll。当我在我的机器上构建服务并使用installutil进行安装时,它可以正常工作,并执行它应该执行的操作。但是当我投入生产时,操作系统是Windows Server 2003 R2,并且它为LIVE数据库使用了不同的连接字符串。Windows服务权限问题

唯一改变的是连接字符串和操作系统。我安装了服务,它安装正常,但什么也没做。它不创建文件夹或将图像保存到磁盘。我知道我应该记录错误,但这是我的第一份工作,而且我是这方面的新人。所以我试着写一些记录事件,但它不创建日志并写入事件。事实上,如果我尝试创建日志并编写一个事件,就像我在onstart子中的第一个调用一样,它不会这样做。现在我迷路了,我不确定该从哪里出发。如果您花时间阅读本文,我很感激您的任何输入。

这是我的OnStart方法中的代码。

Dim LiveEvents As New EventLog 
    If Not EventLog.SourceExists("MySource") Then 
     EventLog.CreateEventSource("MySource", "GL") 
    End If 
    LiveEvents.Source = "MySource" 
    LiveEvents.Log = "GL" 
    LiveEvents.WriteEntry("ServiceStarted and is working.", EventLogEntryType.Information) 
    Dim Logic As New ProcessMail 
    workTimer = New Timer(New TimerCallback(AddressOf Logic.ProcessMessages), Nothing, (1000 * 60 * 10), (1000 * 60 * 10)) 
    LiveEvents.WriteEntry("Called Our DLL", EventLogEntryType.Information) 
    MyBase.OnStart(args) 

所以,如果你不知道他们去的问题。 1.如果我需要在Windows Server 2003 R2中创建导向器并使用Windows服务保存文件。我应该使用什么系统System.ServiceProcess.ServiceInstaller帐户属性? 2.是否有任何一种特殊的设置过程,我需要在winows server 2003 R2中执行以允许我安装的服务具有读写目录权限的权限?

非常感谢您提供的任何信息和帮助。

+0

谁在运行?本地系统或特定帐户?你想创建什么文件夹?您需要重新进入并添加一些仪器,以便您可以捕获正在发生的错误并找出其抱怨的内容。 – Joe

+0

该服务应该作为管理员运行它的创建文件夹在C:/ images文件夹我安装。顺便说一句,如果本地系统功能最强大,我已经为每个帐户属性创建了4个版本,然后我将使用 –

+0

SCM中为您的服务配置了哪些帐户? – Joe

回答

1

您选择的帐户需要具有足够的目录权限。只要您在文件夹上设置了正确的权限,该帐户就没有特别之处。解决问题的最简单方法是从一个功能强大的帐户开始(例如本地系统,您可以通过“登录”选项卡下的服务属性小程序随时更改帐户,只需停止并重新启动服务,然后查看帐户更改是否有任何区别)。您也可以允许“所有人”对该文件夹有完整的访问权限,并查看是否有任何区别,只要记住在诊断问题后只留下必要的权限和权限即可

另外,你应该检查事件查看器是否有错误,你可以使用sysinternals中的一些工具来帮助你找到问题(http://technet.microsoft.com/en-us/sysinternals/bb545027) )。运行该服务的帐户需要具有足够的权限才能写入事件日志,因此这是尝试以特权用户身份运行该服务以查看是否会开始写入日志的另一个原因。当然如你所说,增加更多的日志记录也可能是一个不错的选择。确保安装的服务没有错误,并显示为在服务小程序中运行。

+0

是啊安装没有任何错误,至少没有报告在installutil和事件应用程序日志中它只是说服务启动。林猜测本地系统,并以某种方式在我创建的c://图像文件夹中(我将创建文件夹的位置),我必须给它一些权限,但我不知道如何去 –

+0

甚至在本地系统它仍然没有创建日志和写一个事件。即使这是服务的第一件事 –

+0

你能提供一些来自你的服务的代码吗? OnStartEvent中执行什么以及如何创建日志以及如何写入日志? – KJRB