2016-11-15 6 views

答えて

0
//Removes local network printer based 
    //on full unc path returns true if successful 
    //otherwise false 

    public static bool RemoveUnc(string printUncPath) 
    { 
     ManagementScope oManagementScope = new ManagementScope(ManagementPath.DefaultPath); 
     oManagementScope.Connect(); 

     SelectQuery oSelectQuery = new SelectQuery(); 
     oSelectQuery.QueryString = @"SELECT * FROM Win32_Printer WHERE Name = '" + 
      printUncPath.Replace("\\", "\\\\") + "'"; 

     ManagementObjectSearcher oObjectSearcher = 
      new ManagementObjectSearcher(oManagementScope, oSelectQuery); 

     ManagementObjectCollection oObjectCollection = oObjectSearcher.Get(); 

     if (oObjectCollection.Count != 0) 
     { 
      foreach (ManagementObject oItem in oObjectCollection) 
      { 
       oItem.Delete(); 
       return true; 
      } 
     } 
     return false; 
    } 

私はそれがそのエラーを引き起こすスラッシュを含む文字列であると仮定しています。以下は、ローカルワークステーションからプリンタを削除するために使用する例です。プリンタの共有名には、「\\ printserver \ printerShare」のような形式が含まれています。 printUncPath.Replace( "\\"、 "\\\\")に注意してください。これがあなたの問題を解決すると考えてください。あなたは二度エスケープする必要があります。

関連する問題