2010-04-05 12 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()); 
} 
} 

Korzystam z następującego kodu, aby ustawić udział, ale zawsze otrzymuję zwrotną wartość 9, która oznacza nieprawidłową nazwę. Przekazuję ciąg znaków i próbuję użyć jawnego ciągu znaków i nadal pojawia się błąd 9.Tworzenie udziału programowo kończy się niepowodzeniem z błędem 9

Jednak zdarza się, że tworzę udział zdalnie, a nie na komputerze lokalnym. Próbowałem upewnić się, że łączę się ze zdalnym dostawcą WMI, ale nie jestem pewien, czy odniosłem sukces.

Wszelkie sugestie od guru WMI i innych są bardzo mile widziane.

Odpowiedz

5

Znaleziono odpowiedź na innej stronie. Ścieżka do folderu musi być lokalną ścieżką do komputera, na którym tworzony jest udział, a nie ścieżką UNC, tak jak ja.

5

Miałem ten sam błąd. W moim przypadku jednak problem polegał na cofnięciu ukośnika wstecznego. Wykonanie polecenia directoryPath.TrimEnd ('\') rozwiązało problem.

+0

Thanks for sharing – MichaelS

+0

Jeżeli ścieżka jest dla korzenia napędu, na przykład DO:\. Następnie wymagany jest ukośnik odwrotny. –

5

Zwracane wartości

zwraca jedną z wartości podanych w poniższej tabeli lub jakąkolwiek inną wartość, aby wskazać błąd. 0 - Sukces

2 - Odmowa dostępu

8 - Nieznany awaryjności

9 - Nieprawidłowa nazwa

10 - Nieprawidłowy poziom

21 - Nieprawidłowy parametr

22 - Duplikat udziału

23 - Przekierowano ścieżka

24 - Nieznane urządzenie lub katalog

25 - nazwa Net Nie znaleziono

+0

Gdzie jest źródło tej listy? – reasra

+0

nie może sobie przypomnieć, to było dawno temu, ale tutaj jest jeden link https://msdn.microsoft.com/en-us/library/aa393598(v=vs.85).aspx – Moji