通过网络共享访问本地文件夹的问题

时间:2012-05-08 13:26:46

标签: c# windows-services

我有一个使用登录localhost\administrator运行的Windows服务。此服务旨在调用另一个可执行文件(MyProcess.exe),它应该将一些内容写入日志文件。该服务使用Process.Start()来创建流程,如下所示:

var p = new Process();
p.StartInfo.FileName = processFileName;
p.StartInfo.Arguments = arg;
p.Start();

问题是,MyProcess.exe似乎被拒绝写入日志文件的权限,即使localhost\administrator无疑拥有日志文件夹的权限。如果我从命令行运行MyProcess.exe,它将完美运行。

那么,是否有可能使用不同的用户登录执行该过程?

您能否想到MyProcess.exe被拒绝写入日志文件的权利的任何其他原因?

更新:日志文件正在写入本地计算机,但使用的是网络地址,即\\MyPC\LogFolder。当我更改代码以引用C:\MyFolder时,一切正常。显然网络地址有问题(即使它是本地的)。

我需要在文件夹上放置哪些共享设置,以便本地系统帐户可以访问该文件?

3 个答案:

答案 0 :(得分:3)

如果您正在使用模拟,则可以模拟可以是当前用户或指定用户的用户。如果不是,它将在本地系统下运行,具有本地系统的特权。

答案 1 :(得分:1)

p.StartInfo.Domain = "UserName";
p.StartInfo.Password = "Passw0rd!";

您可以从以下网址获取用户名:

Thread.CurrentPrincipal.Identity.Name

答案 2 :(得分:1)

我已经解决了。

正如我的更新中所述,问题是该进程使用网络共享地址\\MyPC\LogFolder解决了日志文件夹,并且在我们切换配置时将其写入c:\Logfolder ,它运作良好。

因此,当您查询本地文件夹时,localhost\Administrator帐户被视为拥有足够的权限。但是,当您通过网络共享时,您需要提供有效的网络凭据,而localhost\Administrator只是不会删除它。如果您更改为使用MYDOMAIN\MyUser,它甚至可以使用网络共享地址。