2

关于在 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 博客页面中找到任何有用的提示。
有关此特定要求的更多信息,请在此处询问。

提前感谢您的关注和帮助。

4

1 回答 1

2

准备刻录的文件位于 \AppData\Local\Microsoft\Windows\Burn。稍微回到基础知识并将文件复制到此位置以开始刻录过程可能是个好主意。无论如何,这是我设法做到这一点的唯一方法。

于 2020-12-22T14:37:48.277 回答