Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.NET实现Windows外壳程序集成_C#_.net_Windows - Fatal编程技术网

C# 使用.NET实现Windows外壳程序集成

C# 使用.NET实现Windows外壳程序集成,c#,.net,windows,C#,.net,Windows,使用.NET和C#在Explorer右键单击菜单中注册程序最简单/最好的方法是什么? i、 e.我希望能够在windows资源管理器中右键单击某个项目,并获得“使用MyProgram编辑”的功能 但它大多只是从.NET进入Win32,而且已经过时了。现在应该怎么做呢?如果您只想添加菜单项,那么shell扩展就太过分了。您可以在注册表中注册命令行,该命令行将以所选文件作为参数运行exe。仅当您想要更改资源管理器的行为、添加自定义图标或钩住基于Shell的文件操作时,才需要Shell扩展 如果您需

使用.NET和C#在Explorer右键单击菜单中注册程序最简单/最好的方法是什么?
i、 e.我希望能够在windows资源管理器中右键单击某个项目,并获得“使用MyProgram编辑”的功能


但它大多只是从.NET进入Win32,而且已经过时了。现在应该怎么做呢?

如果您只想添加菜单项,那么shell扩展就太过分了。您可以在注册表中注册命令行,该命令行将以所选文件作为参数运行exe。仅当您想要更改资源管理器的行为、添加自定义图标或钩住基于Shell的文件操作时,才需要Shell扩展


如果您需要一个shell扩展,那么最好在非托管代码中编写一个瘦包装器,通过某种跨进程通信通道调用另一个进程,即您的.NET应用程序。由于所有潜在的版本控制问题,不建议将.NET运行时加载到explorer进程中。

Jesse Kaplan解释了为什么它如此糟糕: