ObjectGetOptions options = new ObjectGetOptions();
ManagementPath p = new ManagementPath("\\\\server01\\root" + "\\cimv2:Win32_Share");
// Make a connection to a remote computer.
ManagementScope scope = new ManagementScope("\\\\server01\\root\\cimv2");
scope.Connect();
// Create a ManagementClass object
ManagementClass managementClass = new ManagementClass(scope, p, options);
// Create ManagementBaseObjects for in and out parameters
ManagementBaseObject inParams = managementClass.GetMethodParameters("Create");
ManagementBaseObject outParams;
// Set the input parameters
//inParams["Description"] = String.Empty;
inParams["Name"] = "test";
inParams["Path"] = @folderPath;
inParams["Type"] = 0x0; // Disk Drive
// Invoke the method on the ManagementClass object
outParams = managementClass.InvokeMethod("Create", inParams, null);
// Check to see if the method invocation was successful
if ((uint)(outParams.Properties["ReturnValue"].Value) != 0)
{
throw new Exception("Unable to share directory. Error code: " + outParams.Properties["ReturnValue"].Value);
}
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
}
我使用以下代码来设置共享,但我总是得到返回值9,这意味着名称无效。我传递一个字符串,并尝试使用显式字符串,我仍然得到错误9。
我正在远程创建共享而不是在本地计算机上创建共享。我试图确保我连接到远程WMI提供商,但我不确定我是否成功。
非常感谢WMI大师和其他人的任何建议。
答案 0 :(得分:5)
在另一个网站上找到答案。文件夹路径必须是创建共享的机器的本地路径,而不是像我正在使用的UNC路径。
答案 1 :(得分:5)
我有同样的错误。在我的情况下,虽然问题是一个尾随反斜杠。执行directoryPath.TrimEnd('\')解决了这个问题。
答案 2 :(得分:5)
返回值
返回下表中的一个值或任何其他值以指示错误。 0 - 成功
2 - 拒绝访问
8 - 未知失败
9 - 名称无效
10 - 无效等级
21 - 参数无效
22 - 重复分享
23 - 重定向路径
24 - 未知设备或目录
25 - 未找到网络名称