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

时间:2015-09-08 09:21:03

标签: c# desktop windows-shell windows-search

我正在尝试使用C#根据windows search protocol触发Windows常见桌面搜索。实现它的代码非常简单。

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

以上版本适用于Win7和Win8,搜索窗口会显示出来。但是当我在文档中添加查询时说:

    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(的ProcessStartInfo   startI nfo)
  在System.Diagnostics.Process.Start()
  在   System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
  在   System.Diagnostics.Process.Start(String fileName)
  在   ProcessStart.Program.Main(String [] args)in   e:\ WorkSpace \ ProcessStart \ Proc essStart \ Program.cs:第15行

我做错了什么,Win7和Win8有关搜索协议的区别是什么?谢谢!

1 个答案:

答案 0 :(得分:0)

你需要传递位置 像

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