使用c#通过搜索协议执行常见的桌面搜索



我正在尝试使用c#根据windows搜索协议触发windows通用桌面搜索。这是一个非常简单的代码来实现它。

    static void Main(string[] args)
    {
        const string searchQuery = "search:";
        Process.Start(searchQuery);
    }
上面的

对Win7和Win8都有效,会显示一个搜索窗口。但是当我添加query的时候,正如文档所说:

    const string searchQuery = "search:query=a";
    Process.Start(searchQuery);

就是没有反应,也没有例外。之后,我尝试在查询中添加位置信息:

    const string searchQuery = "search:query=a&crumb=location:\";
    Process.Start(searchQuery);

奇怪的是,这在Win7中工作得很好,一个搜索窗口提示,并开始像预期的那样搜索"a"。但是在Win8中失败了,并且抛出了一个异常:

未处理异常:System.ComponentModel。Win32Exception:系统异常找不到指定的驱动器
在System.Diagnostics.Process.StartWithShellExecuteEx (ProcessStartInfostartI nfo)
在System.Diagnostics.Process.Start ()
在System.Diagnostics.Process。开始(ProcessStartInfo startInfo)
在System.Diagnostics.Process。开始(字符串文件名)
在ProcessStart.Program。Main(String[] args) ine:WorkSpaceProcessStartProc essStartProgram.cs:line 15

我做错了什么,Win7和Win8在搜索协议上有什么不同?谢谢你!

您需要传递位置像

const string searchQuery = "search:search:query=seattle&crumb=location:C://MyFolder";
Process.Start(searchQuery);