BinScope 和 ArgumentException:路径中的非法字符

BinScope 和 ArgumentException:路径中的非法字符

System.ArgumentException: Illegal characters in path在尝试编写脚本时遇到了BinScope从命令行。BinScope 是 Microsoft 的 SDLC 审计工具,完整输出如下。

异常声明了非法字符,但它没有告诉我非法字符是什么,也没有告诉我它的位置。我有点不知所措,因为所有选项都是有效的(根据binscope.exe /?),并且所有路径都已加引号。

路径中哪个(或哪些)字符是非法的?如何确定违规字符?


C:\Users\Audit\Desktop>binscope.exe /sdl "C:\Users\Audit\Deskt
op\Program\Agent\twprogram.exe" /sympath "C:\Users\Audit\De
sktop\Program\Agent\twprogram.pdb" /outdir "C:\Users\Audit\
Desktop\" /logfile twprogram.xml
Microsoft SDL BinScope binary analysis tool v1.0.4027.29711

Unhandled Exception: System.ArgumentException: Illegal characters in path.
   at System.IO.Path.CheckInvalidPathChars(String path)
   at System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
   at System.IO.Path.NormalizePath(String path, Boolean fullCheck)
   at System.IO.Path.GetFullPathInternal(String path)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Bo
olean overwrite)
   at Microsoft.MSEC.BinScope.BinScopeMain.Run(BinScopeConfiguration config, Bin
ScopeScanner scanner)
   at Microsoft.MSEC.BinScope.BinScopeMain.Main(String[] args)

和:

C:\Users\Audit\Desktop>echo %PATH%
C:\Program Files (x86)\Microsoft\SDL BinScope\;C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\

答案1

转义(双击,如Desktop\\")或删除最后的反斜杠/outdir "C:\Users\Audit\Desktop\"- 它的解析方式会创建[转义]不平衡引号字符("),这在路径中是无效的。

顺便说一句-取自微软参考资料:http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars%28v=vs.110%29.aspx

在基于 Windows 的桌面平台上,无效路径字符可能包括 ASCII/Unicode 字符 1 到 31,以及引号(“)、小于号(<)、大于号(>)、管道符(|)、退格符(\b)、空值(\0)和制表符(\t)。

编辑:关于 Windows 上 C#(以及 C、C++)参数解析规则的附加信息(取自http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx):

如果双引号后面有两个或偶数个反斜杠,则前面的每个反斜杠对都会被替换为一个反斜杠,并删除双引号。如果双引号后面有奇数个反斜杠(包括一个),则前面的每个反斜杠对都会被替换为一个反斜杠,并删除剩余的反斜杠;但是,在这种情况下不会删除双引号。

相关内容