2009-10-25 496 views
4

我想確定如何以編程方式從Microsoft搜索啓動/停止/暫停索引器。如何啓動/停止/暫停Windows搜索索引器

我知道這是可能的,因爲我已經看到了它在程序中做過這樣的一個:http://brandontools.com/files/folders/sidebar_gadgets/entry511.aspx

但是,我找不到MSDN或任何地方的任何文檔。

有一個「Windows搜索」服務,可以使用傳統的服務控制方法進行控制。但是,啓動/停止此服務也會改變搜索本身的可用性。我想控制索引器。

有誰知道在哪裏可以找到文檔描述如何與索引器交互?我的搜索技能讓我失望了。

回答

3

沒有辦法簡單地禁用索引部分。這是一個全或無的服務。在WSearch服務狀態的描述:

「提供內容索引和文件,電子郵件以及其他內容(通過可擴展性API)的屬性緩存該服務響應文件和電子郵件通知索引修改的內容如果服務。被停止或禁用時,資源管理器將無法顯示項目的虛擬文件夾視圖,並且資源管理器中的搜索將回退到逐項緩慢搜索。「

然而,您也許能夠通過驅動器/文件夾的屬性來控制它......從資源管理器中,您可以切換它的一個單獨的驅動器(見驅動器的屬性,有一個選項「允許索引服務...「)或文件夾(文件夾屬性 - >高級 - >」爲了快速搜索,允許建立索引服務...「)。

編輯 ...有點谷歌搜索的,而上述特性可供選擇 - 如果你看一下System.IO.FileAttributes的MSDN頁,有一個屬性NotContentIndexed與描述的文件不會被操作系統的索引內容索引服務。我會假設你應該能夠在個人文件夾上設置它。我不知道如果在驅動器級別設置(沒有通過驅動器的遞歸運行),這是否可行,但希望它可以讓您在最終嘗試實現的任何方面獲得先機。

+1

在「索引選項」中有一個按鈕來暫停索引。暫停此操作將保持現有索引可用於搜索。 – 2016-11-29 18:30:21

+0

但顯然,單擊暫停只會暫停15分鐘;它將在該時間到期後恢復索引。 – 2016-11-29 18:36:40

0

像這樣:

ServiceController的服務=新的ServiceController( 「WSearch」);

service.Start();

service.Stop();

+0

該OP說,停止所有搜索可用性,而不僅僅是索引... – bdonlan 2009-10-25 19:25:26

-1

打開 「運行」 對話框(開始|運行),輸入(或複製) 的%SystemRoot%\ SYSTEM32 \ COMPMGMT.MSC/s的 ,展開最後一個

+0

OP正在尋找一個編程解決方案,而不是前端解決方案。 – 2009-10-25 20:33:24

0

這裏是一個編程偉大的教程與Windows搜索進行交互:article at JoyOfCode

Windows Search 3.x SDK提供了一個.NET API,可用於Windows Search 3或4。

不幸的是,它不公開暫停/恢復。我發現的所有索引控件樣本都使用WMI來停止搜索服務。這顯然會停止索引,但是以搜索本身不可用爲代價。

0

這是一個古老的線程,但我碰到了它。其他人可能也是如此。

使用AutoIT腳本打開索引選項並單擊對話框中的暫停按鈕。