1

Я ловлю 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 ответ1

1

Escape (double, как в 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):

Если двойная кавычка следует за двумя или четным числом обратных косых черт, каждая последующая пара обратной косой черты заменяется одной обратной косой чертой, а двойная кавычка удаляется. Если двойная кавычка следует за нечетным числом обратных косых черт, включая только одну, каждая предыдущая пара заменяется одной обратной косой чертой, а оставшаяся обратная косая черта удаляется; однако в этом случае двойная кавычка не удаляется.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .