我是 .Net,C#和visual studio 的新手。现在我想使用c#开发 Windows服务应用程序。 Windows服务需要将一些数据写入某个文件。 我正在使用 visual studio 2010 。我正在使用 windows xp 作为我的操作系统。我创建了一个windows service.its安装程序等。
当我在非默认文件夹(c驱动器除外)的文件夹中安装Windows服务时,在运行服务后,它将创建文件并写入文本文件成功。
当我在默认位置安装服务时(安装时我不能使用默认路径)(请参阅附图)
然后安装后我运行服务。但是没有创建文件,也没有抛出异常。以下是文件的编码片段。
string 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#的新手。我不知道正确的术语。
答案 0 :(得分:1)
如评论中所述,Program Files目录将受到操作系统的保护,并且不是放置应用程序生成文件的理想位置。存储这些文件的最佳位置是在应用程序数据文件夹中。 .net框架中有一些帮助方法可以帮助您使用Environment类动态定位文件夹,并使用其中一个Environment.SpecialFolder枚举来获取文件夹的路径。
答案 1 :(得分:0)
您可以选择(如上所述)更改日志文件的路径并将其移动到受保护的程序文件夹之外, 或者您可以更改NTFS权限以允许在“程序文件/您的应用程序”文件夹中写入的那些日志文件和文件夹上进行WRITE / MODIFY。
请注意,您的Windows服务应用程序未以SYSTEM身份运行。 它可能是NT AUTHORITY \ LOCAL SERVICE或NT AUTHORITY \ NETWORK SERVICE 运行您的服务,然后运行进程资源管理器,打开“USER”列并检查它。