2010-06-07 124 views
2

我已成功部署Windows 7计算机上的C#Windows服务。C#Windows服务尝试写入文件夹时访问被拒绝

现在,当我尝试创建使用该代码的文件:

FileStream os = new FileStream(String.Format(folderName, fileName), FileMode.Create); 

我可以访问的文件路径被拒绝。

在服务安装程序我设置以下参数:

this.serviceProcessInstaller1.Account = 
     System.ServiceProcess.ServiceAccount.LocalSystem; 
    this.serviceProcessInstaller1.Password = "Pass"; 
    this.serviceProcessInstaller1.Username = "Administrator" 

我添加了所有可能的账户,具有完全权限的文件夹,我想创建该文件,但没有任何帮助。

任何建议,你在错误的道路使用String.Format()高度赞赏

+0

您是否在管理工具下的“服务”对话框中确认了服务所使用的用户帐户? – 2010-06-07 16:28:07

回答

0

。看看msdn http://msdn.microsoft.com/en-us/library/fht0f5be.aspx

你可能要像

FileStream os = new FileStream(folderName [email protected]"\" + fileName, FileMode.Create); 

FileStream os = new FileStream(String.Format(@"{0}\{1}", folderName fileName), FileMode.Create); 

FileStream os = new FileStream(Path.Combine(folderName fileName), FileMode.Create); 
+1

'Path.Combine'。 – SLaks 2010-06-07 16:30:46

+0

不知道“folderName”中存储了什么,我们不能说这个用法是错误的。 例如:字符串folderName =“c:\ user \ {0}”; \\将工作得很好。 – 2010-06-07 16:31:51

+0

@Amby,对于具有该名称的变量来说这不合理。 – brickner 2010-06-07 16:34:19

0

可能不是答案。但是,首先记录服务尝试访问的确切路径。 然后,通过使用您提供给服务的凭据登录到计算机并尝试访问该路径。

string fullPath = String.Format(folderName, fileName); 
logger.Write(fullPath); 
FileStream os = new FileStream(fullPath, FileMode.Create); 
+0

我按照上面的建议使用了Path.Combine()。谢谢。 – 2010-06-07 16:48:21

相关问题