在日志文件中写入Windows服务权限
问题描述:
我使用C#创建了一个Windows服务,该服务在C:\ProgramData
中写入日志(使用NLog)。
当我调试服务(在我的Windows 7上)(使用上面写的代码)时,日志文件被正确创建并正确写入日志记录。 但是,当我在我的服务器上安装Windows服务器2008上运行的服务(x86)时,没有创建日志文件(我也检查了C:\Windows\System32\
,没有任何内容)。在日志文件中写入Windows服务权限
我怀疑这是一个授权问题,所以我怎么知道我的服务使用哪些权限?
PS:我已经使用具有管理员权限的命令行C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\PathToMyService\MyService.exe
安装了我的服务。
答
运行services.msc
,找到您的服务请点击右键并选择Properties
。检查Log On
选项卡以查看您的服务在哪个帐户下运行。
至于你的问题,默认情况下,我认为大多数服务运行在Local System Account
,我假设有权写入C:\ProgramData
目录。你确定nlog.config
文件是与你的服务一起部署的吗?
答
您应该在Windows控制面板fpr服务中看到您的服务。在上下文菜单中,您可以看到运行服务的用户。您甚至可以更改在那里运行您的服务的用户。
您必须授予该用户写入日志目录的权利。
权利将是您的服务运行的任何身份,而不是用于安装它的身份。详情请看这里:http://stackoverflow.com/questions/858597/why-wont-my-windows-service-write-to-my-log-file –
C:\ windows \ system32不应该被用来写日志文件到。这是一个重要的操作系统目录。另外C:\ ProgramData我们是应用程序二进制文件驻留,不应该用于日志文件。您应该将应用程序服务的日志文件写入C:\ AppData \ local \ ...或Windows 2008服务器上的Windows事件日志。如果你这样做的话,你的权限问题也会减少,除此之外,这也是很好的做法。 –