3

我有一个 Windows 服务,使用 login 运行localhost\administrator。该服务旨在调用另一个可执行文件 ( 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,一切正常。显然网络地址有问题(即使它是本地的)。

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

4

3 回答 3

3

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

于 2012-05-08T13:32:03.007 回答
1
p.StartInfo.Domain = "UserName";
p.StartInfo.Password = "Passw0rd!";

您可以从以下位置获取用户名:

Thread.CurrentPrincipal.Identity.Name
于 2012-05-08T13:33:05.427 回答
1

我已经解决了。

正如我在更新中指出的那样,问题是该过程正在使用网络共享地址寻址日志文件夹\\MyPC\LogFolder,并且当我们切换配置以便它写入而不是写入时c:\Logfolder,它工作正常。

因此,似乎当您寻址本地文件夹时,该localhost\Administrator帐户被认为具有足够的权限。但是,当您通过网络共享时,您需要出示有效的网络凭据,而localhost\Administrator不是切断它。如果您更改为 use MYDOMAIN\MyUser,它甚至可以使用网络共享地址。

于 2012-05-08T14:16:58.930 回答