0

我对.Net、C# 和 visual studio很陌生。现在我想使用 c# 开发 Windows 服务应用程序。Windows 服务需要将一些数据写入某个文件。我正在使用视觉工作室 2010。我正在使用windows xp作为我的操作系统。我创建了一个 Windows service.its 安装程序等。

当我在非默认文件夹(C盘除外)以外的文件夹中安装Windows服务时,运行服务后它将创建文件并成功写入文本文件。

当我在默认位置安装服务时(安装时我无法默认路径)(请参考附图)

在此处输入图像描述

然后在安装之后我运行服务。但是文件没有创建并且没有抛出异常。以下是文件的编码片段。

字符串 logPath = AppDomain.CurrentDomain.BaseDirectory + "log\CastrolSdWindowsService_Log.txt";

fs = new FileStream(logPath, FileMode.Append, FileAccess.Write);
                fs.Write(bytes, 0, bytes.Length);
                fs.Flush();

我找不到为什么该文件没有在 C 盘中创建。请帮助我,欢迎大家提出你的想法。

很抱歉技术术语中的错误,因为我是 .net 和 c# 的新手。我不知道正确的术语。

4

2 回答 2

1

正如评论中所述,Program Files 目录将受到操作系统的保护,并且不是放置应用程序生成文件的理想位置。存储这些文件的最佳位置是应用程序数据文件夹。.net 框架中有一些辅助方法可以帮助您通过使用Environment类并使用Environment.SpecialFolder枚举之一来动态定位文件夹来获取文件夹的路径。

于 2012-07-17T14:30:01.627 回答
0

您可以选择(如上所述)更改日志文件的路径并将它们移到受保护的程序文件文件夹之外,或者您可以更改 NTFS 权限以允许对要写入“程序文件”中的那些日志文件和文件夹进行 WRITE/MODIFY /你的应用程序”文件夹。

请注意,您的 Windows 服务应用程序没有以 SYSTEM 身份运行。它可能是 NT AUTHORITY\LOCAL SERVICE 或 NT AUTHORITY\NETWORK SERVICE 运行您的服务,然后运行进程资源管理器,打开“USER”列并检查它。

于 2012-07-17T19:24:48.227 回答