none
升级KB4041676补丁后索引检索API(C++)调用实行的结果失败 RRS feed

  • 问题

  • Windows 10(64Bit) Creators Update(1703)境中利用Windows的索引API能够搜索出想要的内容

    但是在升KB4041676丁后,同样的检索代却没有能够出想要的果,于是将除,退回到Windows 10(64Bit) Creators Update(1703)境之后又能够索了,想咨一下KB4041676程序会索引索有什么影响

    调用Windows的索引API代码如下:

            CStringW strSQL;
    
    //SQL for search.
    	strSQL.Format(L"SELECT \"System.ItemName\",\"System.Title\",\"System.Subject\",\"System.Author\",\"System.Size\",\"System.ItemType\",\"System.ItemUrl\" F\
    ROM SystemIndex  WHERE  System.Search.Store <> 'mapi' and System.ItemType <> 'Directory'  A\
    ND (Scope='%s')   A\
    ND Contains((System.FileName,contents,System.Title,System.Subject,System.Author,System.Keywords,System.Comment),'\"%s*\"') ORDER BY System.ItemUrl",
    		         strFolder , strKey);
    
    	CDataSource cDataSource;
    	hr = cDataSource.OpenFromInitializationString(L"provider=Search.CollatorDSO.1;EXTENDED PROPERTIES=\"Application=Windows\"");
    	if(!SUCCEEDED(hr))return nItemNum;
    
    	CSession cSession;
    	hr = cSession.Open(cDataSource);
    	if(!SUCCEEDED(hr))return nItemNum;
    
    	CCommand<CDynamicAccessor, CRowset> cCommand;
    	hr = cCommand.Open(cSession, strSQL);
    	if(!SUCCEEDED(hr))return nItemNum;
    
    	// Get the count of search results
    	GetRowNum(&cCommand,nItemNum);
    	return nItemNum;
    
    HRESULT CTestSearchDlg::GetRowNum(CCommand<CDynamicAccessor, CRowset>* pCCommand, int& nRowNum)
    {
    	nRowNum=0;
    	for (HRESULT hr = pCCommand->MoveFirst(); S_OK == hr; hr = pCCommand->MoveNext())
    	{
    		++nRowNum;
    	}
    	return 0;
    }

    这部分代码在升级KB4041676丁前能够搜索出文件但是KB4041676级后却找不到任何文件。

    *KB4041676提及了Microsoft Windows 搜索件、Windows 内核模式驱动程序的更新。


    2018年1月4日 3:14

全部回复

  • Hi,

    欢迎在MSDN论坛发帖。

    根据我的查找, KB4041676 补丁,更新了这些东西,具体你可以查看一下。

    我从这个文档中看出对SQL影响的,只是对数据库工具的滚轮提到了,并没说不能format,得到数据。

    https://support.microsoft.com/en-sg/help/4041676/windows-10-update-kb4041676

    After installing this KB, Internet Explorer 11 users who use SQL Server Reporting Services (SSRS) may not be able to scroll through a drop-down menu using the scroll bar.

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月4日 6:50
    版主
  • 谢谢回复,因为在更新KB4041676 补丁前后,调用的SQL文语句是没有变化的,那有没有可能是这次补丁对以下的API产生了什么影响呢?

    主要调用Windows索引代码接口的语句其实就3块

    CDataSource cDataSource; hr = cDataSource.OpenFromInitializationString(L"provider=Search.CollatorDSO.1;EXTENDED PROPERTIES=\"Application=Windows\"");

    CSession cSession; hr = cSession.Open(cDataSource); CCommand<CDynamicAccessor, CRowset> cCommand; hr = cCommand.Open(cSession, strSQL);

    2018年1月5日 1:49
  • Hi,

    从这些函数来看,应该没有办法更改的,因为这个函数是调用.NET Framework 中的类库,这个更新没有提到更新.NET Framework 的事情。对于数据的操作,文档中提到database 的操作。

    Installing this update may cause applications based on the Microsoft JET Database Engine (Microsoft Access 2007 and older or non-Microsoft applications) to fail when creating or opening Microsoft Excel .xls files. The error message is, “Unexpected error from external database driver (1). (Microsoft JET Database Engine)".

    不知是不是这个地方影响的。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年1月5日 8:09
    版主
  • 你好,感谢回复!

    如此看来的确是升级后对Microsoft JET Database Engine的影响可能造成了问题的发生。

    那还想劳烦确认一下在Win10系统中,Windows自身的索引检索功能是不是也是用的Microsoft JET Database Engine呢,因为查了一下相关资料,没有能够找到Windows自带的索引检索用的是哪个DB引擎,谢谢。

    2018年1月8日 8:08
  • Hi,

    >>没有能够找到Windows自带的索引检索用的是哪个DB引擎,谢谢。

    从wikipedia 上面我们可以看到是有 Windows Internal Database描述的,但是我不确定这是否正确,并没有发现微软官方文档上面有提到这个问题。

    关于这个问题,你可以去提反馈,在windows 10 feedback。 

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2018年1月8日 9:38
    版主
  • Hi,

    后经查证在Win10(1706)版本后System.ItemUrl这个关键字的检索好像不支持了,所以导致了检索失败

    所以改用System.ItemPathDisplay 这个关键字取得文件的路径,但是在中文系统中System.ItemPathDisplay和System.ItemUrl取到的路径是不同的,想请教一下微软是否提供这两种地址的转换方法呢

    System.ItemUrl取到的路径内容:

    file:C:\Users\test\text.txt

    System.ItemPathDisplay取到的路径内容:

    C:\用户\test\text.txt

    因为涉及到多国语言版本,所以想知道对于这类系统自带的Well Known Folder的文件夹(诸如用户,桌面,文档,图片)有没有什么方法可以转换成系统默认的英文的办法,谢谢!

    2018年3月21日 3:46