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

我正在使用以下代碼來設置共享,但我總是得到9的返回值,這意味着無效的名稱。我傳遞一個字符串,並試圖使用明確的字符串,我仍然得到錯誤9.以編程方式創建共享失敗,錯誤9

我創建遠程共享,而不是在本地計算機上。我試圖確保連接到遠程WMI提供程序,但我不確定自己是否成功。

WMI大師和其他人的任何建議是非常感謝。

回答

5

在另一個網站上找到答案。文件夾路徑需要是創建共享的計算機的本地路徑,而不是像我使用的UNC路徑。

5

我有同樣的錯誤。在我的情況下,雖然問題是一個尾隨反斜槓。做directoryPath.TrimEnd('\')解決了這個問題。

+0

感謝共享 – MichaelS 2014-02-26 15:10:44

+0

除非路徑爲驅動器的根,例如 -

25未知設備或目錄C:\。然後反斜槓是必需的。 – 2015-08-24 18:21:03

5

返回值

返回下表中的一個值或任何其他指示錯誤的值。 0 - 成功

2 - 訪問被拒絕

8 - 未知故障

9 - 無效名稱

10 - 無效水平

21 - 無效參數

22 - 重複分享

23 - 重定向路徑

24 - 淨名稱找不到

+0

此列表的來源在哪裏? – reasra 2016-11-22 20:29:45

+0

現在不記得它很久以前,但這裏有一個鏈接https://msdn.microsoft.com/en-us/library/aa393598(v=vs.85).aspx – Moji 2016-11-23 16:06:56