2012-11-15 21 views
5

मैं अपने विंडोज़ 8 खोज सूचकांक प्रोग्रामेटिक रूप से एक स्थान (स्कोप) जोड़ने की कोशिश कर रहा हूं। कुछ Googling के बाद, मैं [here] से इस कोड को मिला:बैच या vbscript का उपयोग कर विंडोज 7/8 खोज अनुक्रमणिका में कोई स्थान कैसे जोड़ें?

Set objISAdm = CreateObject("Microsoft.ISAdm") 
Set objCatalog = objISAdm. GetCatalogByName("MyCatatlog") 
Set objScope= objCatalog.AddScope("C:\myfiles",False) 
objScope.Alias = "MyCatalogScope" 

दुर्भाग्य से एक 800A01AD त्रुटि सुझाव संकेत वस्तु 'Microsoft.ISAdm' नहीं बनाया जा सकता। कुछ और खुदाई के साथ, ऐसा लगता है कि उपर्युक्त कोड विंडोज 8 पर विंडोज़ खोज के नए संस्करण के साथ काम नहीं करता है।

क्या किसी को पता है कि vb स्क्रिप्ट्स या कमांड लाइन से इसका उपयोग कैसे किया जाए? विंडोज 7 के तहत संभवतः कुछ काम करता है विंडोज 8 पर भी काम करेगा।

उत्तर

2

आपके द्वारा प्रदान किए गए कोड में आप Indexing service interface का उपयोग करने का प्रयास कर रहे हैं। अनुक्रमण सेवा प्रलेखन से Windows 8 में अब उपलब्ध नहीं है:

इंडेक्सिंग सर्विस नहीं रह गया है Windows XP के रूप में समर्थन किया और इसके बजाय Windows 8 के रूप में उपयोग के लिए उपलब्ध नहीं है है, Windows खोज का उपयोग ग्राहक के लिए सर्वर पक्ष खोज के लिए साइड सर्च और माइक्रोसॉफ्ट सर्च सर्वर एक्सप्रेस।

प्रलेखन राज्यों के रूप में, आप Windows Search पर देखना चाहेंगे।

अद्यतन:

मैं यह नहीं किया है, लेकिन पूरा करने के लिए आप documentation राज्यों

(CSM) इंटरफेस आपको क्रॉल स्कोप प्रबंधक से किसी का उपयोग करने से पहले, आप क्या मांग कर रहे हैं निम्नलिखित आवश्यक चरणों को निष्पादित करना होगा:

  1. क्रॉलशर्च प्रबंधक ऑब्जेक्ट बनाएं और इसके ISearchManager इंटरफ़ेस प्राप्त करें।
  2. किसी ISARCHCatalogManager इंटरफ़ेस का उदाहरण प्राप्त करने के लिए "SystemIndex" के लिए GetCatalog पर जाएं IearchManager :: GetCatalog।
  3. ISARCHCatalogManager :: GetCrawlScopeManager को ISearchCrawlScopeManager इंटरफ़ेस का उदाहरण प्राप्त करने के लिए कॉल करें।

क्रॉल स्कोप प्रबंधक (CSM) में कोई परिवर्तन करने के बाद, आप ISearchCrawlScopeManager :: SaveAll कॉल करना होगा। इस विधि में पैरामीटर नहीं हैं और सफलता पर S_OK लौटाते हैं।

ऐसा करने के लिए यहां एक example और another है।

दुर्भाग्य से, मुझे नहीं लगता कि इस VBScript से किया जा सकता है, क्योंकि COM interfaces Windows खोज एपीआई द्वारा प्रदान की IDispatch इंटरफ़ेस है, जो VBScript तरह पटकथा भाषाओं late binding के माध्यम से COM ऑब्जेक्ट कॉल करने के लिए अनुमति देता है को लागू नहीं करते हैं।

क्या इसे वीबीस्क्रिप्ट से होना है, या आप इसे .NET में कर सकते हैं? यदि इसे वीबीस्क्रिप्ट से होना है तो एक दृष्टिकोण एक COM ऑब्जेक्ट के रूप में .NET और expose में एक रैपर लिखना होगा।

+0

धन्यवाद गेटेट। आपके द्वारा प्रदान की गई जानकारी एमएसडीएन से मिली है। मुझे लगता है कि ISearchCrawlScopeManager :: AddRoot विधि का उपयोग सही दिशा है। लेकिन मैं वीबी/वीबीएस प्रोग्रामर नहीं हूं, क्या आप मुझे कुछ कामकाजी कोड दे सकते हैं? – user24442

+0

क्या किसी को पता है कि ISearchCrawlScopeManager :: AddRoot विधि का उपयोग कैसे करें? – user24442

+0

धन्यवाद गेटेट फिर से! यह थोड़ा जटिल होगा यदि इसे निष्पादन योग्य बाइनरी के साथ किया जाना है। मैं पूछ रहा हूं क्योंकि मैं एक अप्रत्याशित विंडोज सेटअप के बाद स्वचालित रूप से इंडेक्स में एक स्थान जोड़ना चाहता हूं। आपका जवाब मूल्यवान है। यह मुझे भूत का पीछा करने से बचाया। – user24442

4

गेटेट, आप एक प्रतिभाशाली हैं!इस कोड को मैं लिंक से सीखा आपके द्वारा दी गई है:

#Code copied from "Powershell Tackles Windows Desktop Search" http://powertoe.wordpress.com/2010/05/17/powershell-tackles-windows-desktop-search/ 
#Microsoft.Search.Interop.dll is needed, download from http://www.microsoft.com/en-us/download/details.aspx?id=7388 
#Load the dll 
Add-Type -path "D:\Unattend\UserFiles\Tools\Microsoft.Search.Interop.dll" 
#Create an instance of CSearchManagerClass 
$sm = New-Object Microsoft.Search.Interop.CSearchManagerClass 
#Next we connect to the SystemIndex catalog 
$catalog = $sm.GetCatalog("SystemIndex") 
#Get the interface to the scope rule manager 
$crawlman = $catalog.GetCrawlScopeManager() 
#add scope 
$crawlman.AddUserScopeRule("file:///D:\*",$true,$false,$null) 
$crawlman.SaveAll() 

सहेजें AddScope.ps1 के रूप में कोड, और एक ऊंचा cmd कंसोल से इसे चलाने:

PowerShell Set-ExecutionPolicy Unrestricted -force 
PowerShell D:\Unattend\UserFiles\AddScope.ps1 

यह है कि!