gpt4 book ai didi

c# - 在进程开始之前对命令行参数执行什么处理/验证?

转载 作者:可可西里 更新时间:2023-11-01 14:14:06 24 4
gpt4 key购买 nike

我有一个小型 WPF 应用程序,它接受文件路径作为命令行参数。

如果用户拖入过多的长路径文件,将超​​过最大命令行长度,至少在 32 位 WinXP 上是这样。

结果是一个错误窗口显示:

Windows cannot access the specified device, path, or file. You may not have the appropriate permissions to access the item.

这看起来类似于错误

The filename or extension is too long.

在这些情况下,进程似乎永远不会启动。

我认为拖放文件实际上只是将它们的路径作为字符串传递,但这些错误表明情况并非如此,并且操作系统/外壳/框架的某些部分正在根据这些是的事实进行某种验证文件/目录路径,当失败时,进程不会启动。

有谁知道在将命令行参数传递给 .NET .exe 和该 .exe 启动之间发生了什么?

最佳答案

答案在你的问题中:路径列表超过最大命令行大小,所以你的程序无法启动。

操作系统在启动您的进程之前构建命令行,因为在创建进程时需要该信息。由于命令行长度超过最大大小,操作系统无法构建它并失败,甚至在尝试创建进程之前可能会出现 ERROR_FILENAME_EXCED_RANGE ( sic )。

因此,您的程序永远不会启动。

关于c# - 在进程开始之前对命令行参数执行什么处理/验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com