【发布时间】:2015-03-17 00:04:18
【问题描述】:
我目前正在尝试使用 C# 中的 WMI 在远程计算机上启动一个进程。该进程读取和写入存储在单独服务器上的文件。
当我手动登录到远程机器时,我可以运行该进程并且一切正常。
但是,当我尝试使用 WMI 从本地计算机远程启动进程时,出现以下错误:
System.UnauthorizedAccessException: Access to the path '\\server\path\input.txt' is denied.
我尝试了多个连接选项,但不确定如何重新创建手动登录时似乎拥有的权限...我需要做什么?
本地机器码
static void LaunchRemoteProcess(string remoteMachine, string command)
{
ConnectionOptions connectionOptions = new ConnectionOptions
{
Impersonation = ImpersonationLevel.Impersonate,
EnablePrivileges = true
};
var managementScope = new ManagementScope(string.Format(@"\\{0}\root\cimv2", remoteMachine), connectionOptions);
managementScope.Connect();
var managementPath = new ManagementPath("Win32_Process");
var objectGetOptions = new ObjectGetOptions();
var managementClass = new ManagementClass(managementScope, managementPath, objectGetOptions);
// Launch the command asynchronously
var inParams = managementClass.GetMethodParameters("Create");
inParams["CommandLine"] = command;
var outParams = managementClass.InvokeMethod("Create", inParams, null);
}
远程机器码
string networkPath = @"\\server\path";
string inputFile = "input.txt";
string inputText = File.ReadAllText(Path.Combine(networkPath, inputFile));
string outputFile = "output.txt";
File.WriteAllText(Path.Combine(networkPath, outputFile), inputText);
编辑 1
如果我手动登录到远程计算机并且该过程仍然失败并出现相同的错误,我已经尝试使用该过程为其工作的用户的凭据:
ConnectionOptions connectionOptions = new ConnectionOptions
{
Username = "username",
Password = "password",
Authority = "ntlmdomain:COMPANYNAME.CO.UK,
EnablePrivileges = true
};
我是否缺少关于 Authority、Authentication 或 Impersonation 属性的内容?
【问题讨论】: