关于在 C# 应用程序中使用 ShellExecute 动词,我确实有这个非常具体的问题,该应用程序使用 System.Diagnostics 命名空间中的 ProcessStartInfo 类。
我所拥有的:一组文件(文本和二进制文件),我想使用安装了 Windows 10 的机器的 CD/DVD 驱动器将它们刻录到 CD/DVD 上。
我想要做什么:从 C# .NET Framework 4.x 应用程序(无论是控制台还是 Windows 窗体),我想使用 ProcessStartInfo 运行一个单独的进程(进程对象)(其中 UseShellExecute 属性是设置为 true)并指定动词“SendTo”,它应该将我的文件集“发送”到准备好的 CD/DVD 驱动器(已插入所需的空磁盘)。
您可以想象它就像在 Windows 资源管理器中选择该组文件,右键单击该组并选择“刻录到 ' CD/DVD 驱动器名称'。这个相同的功能实现为 C# 程序。
我不想要的:我不想使用 IMAPI2 接口,也不想用其他语言(fe C/C++)编写代码。由于 Cygwin 依赖性,我还想避免使用 cdrtools 或 cdrtfe 等外部应用程序。
我已经尝试过:我已经尝试形成正确的 ProcessStartInfo 对象,但似乎我没有将正确的信息传递给底层的 ShellExecute 过程:
var info = new ProcessStartInfo(pathNamesSet)
{
Arguments = "\"" + CDRecorderDrive + "\"",
CreateNoWindow = false,
WindowStyle = ProcessWindowStyle.Normal,
UseShellExecute = true,
Verb = "SendTo"
};
var process = Process.Start(info);
该过程以错误结束:' Win32Exception(1155):指定的文件尚未分配给应用程序'。
我一直在寻找这个特定功能的实现,但仍然无法从 SO 和 MS 博客页面中找到任何有用的提示。
有关此特定要求的更多信息,请在此处询问。
提前感谢您的关注和帮助。