2010-04-05 10 views
6
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()); 
} 
} 

Estoy utilizando el siguiente código para configurar una acción, pero siempre obtengo un valor de retorno de 9, lo que significa que el nombre no es válido. Estoy pasando una cadena y he intentado utilizar una cadena explícita y todavía obtengo el error 9.La creación de acciones falla programáticamente con error 9

No obstante, estoy creando el recurso compartido de forma remota en lugar de en la máquina local. He intentado asegurarme de que me estoy conectando al proveedor de WMI remoto, pero no estoy seguro de si he tenido éxito.

Cualquier sugerencia de los gurús de WMI y otros es muy apreciada.

Respuesta

5

Encontré la respuesta en otro sitio. La ruta de la carpeta debe ser la ruta local a la máquina donde se creó el recurso compartido, no una ruta UNC como la que estaba usando.

5

Tuve el mismo error. En mi caso, aunque el problema fue una barra inversa. Hacer directoryPath.TrimEnd ('\') resolvió el problema. Valores

+0

Gracias por compartir – MichaelS

+0

A menos que el camino es la raíz de una unidad, por ejemplo, DO:\. Entonces la barra invertida es requerida. –

5

Volver

devuelve uno de los valores en la siguiente tabla o cualquier otro valor para indicar un error. 0 - Éxito

2 - Acceso denegado

8 - Desconocido fracaso

9 - Nombre no válido

10 - nivel no válido

21 - Parámetro no válido

22 - Duplicar compartir

23 - ruta Redirigido

24 - Dispositivo desconocido o directorio

25 - Nombre de red no se encontró

+0

¿Dónde está la fuente de esta lista? – reasra

+0

no recuerdo ahora que fue hace mucho tiempo, pero aquí hay un enlace https://msdn.microsoft.com/en-us/library/aa393598(v=vs.85).aspx – Moji

Cuestiones relacionadas