BinScope и ArgumentException: недопустимые символы в пути
Я ловлю System.ArgumentException: Illegal characters in path
при попытке сценария BinScope
из командной строки. BinScope - это инструмент аудита SDLC от Microsoft, полный вывод которого приведен ниже.
Исключением является утверждение о незаконном характере, но оно не говорит мне, что такое незаконный персонаж и его местонахождение. Я в растерянности, потому что все варианты действительны (в соответствии с 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\"
- способ, которым он анализируется, создает [экранированный] несбалансированный символ кавычки ( "
) который недействителен в пути.
кстати - взято из ссылки Microsoft здесь: http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars%28v=vs.110%29.aspx
на настольных платформах на основе Windows недопустимые символы пути могут включать символы ASCII / Unicode от 1 до 31, а также кавычки ("), меньше чем (<), больше чем (>), символ пробела (|), пробел (\ b) , ноль (\ 0) и табуляция (\ t).
Изменить: Дополнительная информация о правилах синтаксического анализа аргументов C# (а также C, C++) в Windows (взято с http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx ):
Если двойная кавычка следует за двумя или четным числом обратных косых черт, каждая последующая пара обратной косой черты заменяется одной обратной косой чертой, а двойная кавычка удаляется. Если двойная кавычка следует за нечетным числом обратных слешей, включая только один, каждая предыдущая пара заменяется одним обратным слешем, а оставшийся обратный слеш удаляется; однако в этом случае двойная кавычка не удаляется.