我正在开发一个小项目,在asp.net mvc3中,它将部署文件从本地驱动器复制到窗口服务器2008 R2服务器上的共享驱动器。我使用WMI连接,连接成功。但是,我尝试创建一个文件夹,并收到消息“登录失败:未知用户名或密码错误”。以下是示例代码:
bool isConnected = false;
options.Username = user.Name.Trim();
options.Password = user.password.Trim();
mScope = new ManagementScope("\\\\xxx.xxx.xxx.xxx\\root\\cimv2", options);
mScope.Connect();
if (mScope.IsConnected == true)
{
//I've gotten to this point. Then, the code below throw the exception
Directory.CreateDirectory(@"\\\\xxx.xxx.xxx.xxx\Tester\shareFile.txt");
isConnected = true;
}
我想知道我在做什么?这是正确的做法吗?
答案 0 :(得分:2)
这是正确的方法,但是您尝试访问的当前用户将被传递到远程计算机以创建目录。此时的管理范围与Directory.CreateDirectory无关。这是两个不同的“世界”。您确实向ManagementScope提供了信用,但这对Directory.CreateDirectory没有影响。你可以使用模仿来做你想做的事:
How do you do Impersonation in .NET?
目前还不清楚你是否在ASP.NET / MVC或其他平台上这样做。你的标签表示ASP.NET MVC,但不是你的主要问题。
请记住,如果您使用的是ASP.NET / MVC,则会使用应用程序池的凭据来执行此类操作。