Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在日志文件中写入的Windows服务权限_C#_Windows Services_Nlog - Fatal编程技术网

C# 在日志文件中写入的Windows服务权限

C# 在日志文件中写入的Windows服务权限,c#,windows-services,nlog,C#,Windows Services,Nlog,我使用C创建了一个Windows服务,它在C:\ProgramData中写入日志 当我调试服务时(在我的Windows 7上)(使用上面编写的代码),会正确创建日志文件并正确写入日志记录。 但是,当我在运行Windows server 2008(x86)的服务器上安装该服务时,不会创建任何日志文件(我还签入了C:\Windows\System32\,没有任何内容) 我怀疑这是一个授权问题,所以我如何知道我的服务使用的是什么权限 PS:我已使用具有管理员权限的命令行C:\Windows\Micro

我使用C创建了一个Windows服务,它在
C:\ProgramData
中写入日志
当我调试服务时(在我的Windows 7上)(使用上面编写的代码),会正确创建日志文件并正确写入日志记录。 但是,当我在运行Windows server 2008(x86)的服务器上安装该服务时,不会创建任何日志文件(我还签入了
C:\Windows\System32\
,没有任何内容)

我怀疑这是一个授权问题,所以我如何知道我的服务使用的是什么权限


PS:我已使用具有管理员权限的命令行
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe C:\PathToMyService\MyService.exe安装了我的服务。

您应该在Windows控制面板fpr services中看到您的服务。在上下文菜单中,您可以看到运行服务的用户。您甚至可以在那里更改运行服务的用户


您必须授予该用户在日志目录中写入的权限。

运行
服务.msc
,找到您的服务右键单击并选择
属性。检查
登录
选项卡,查看您的服务运行在哪个帐户下


至于您的问题,默认情况下,我认为大多数服务在
本地系统帐户下运行,我假定该帐户有权限写入
C:\ProgramData
目录。您是否已确保将
nlog.config
文件与您的服务一起部署?

权限将是您的服务运行时使用的任何身份,而不是用于安装它的身份。有关详细信息,请参见此处:不应使用C:\windows\system32将日志文件写入。这是一个重要的操作系统目录。另外,C:\ProgramData us是驻留的应用程序二进制文件,不应用于日志文件。您应该将应用程序服务的日志文件写入C:\AppData\local\。。。或Windows 2008服务器上的Windows事件日志。如果您这样做,您的权限问题也会少一些,此外还有一个很好的做法。Arg,只是认为nlog.config文件没有与我的服务一起部署。修正@莱托-你的问题听起来太熟悉了。。。发生在我身上好几次!如何确保NLog.config文件与服务一起部署?“总是复制到输出文件夹”还不够吗?答案很好。谢谢