BinScope и ArgumentException: недопустимые символы в пути

926
jww

Я ловлю 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
wmz

Escape (double, как in Desktop\\") или удаление последнего обратного слеша /outdir "C:\Users\Audit\Desktop\"- способ, которым он анализируется, создает [ escape- код] несбалансированной кавычки char ( "), которая недопустима в path.

кстати - взято из ссылки 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 ):

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

Вот и все, спасибо ... Трудно поверить, что программа не может использовать заданный пользователем путь без массажа. На самом деле, я изо всех сил пытался дать ему что-то простое в обращении, например, пути в кавычках и однозначные каталоги. jww 9 лет назад 0
@jww, конечно, недосмотр (как и ожидалось пользователем - если это не задокументировано), но это побочный продукт парсера c # args. Вы можете попытаться отправить отчет об ошибке (вероятно, под зонтиком VS) wmz 9 лет назад 0

Похожие вопросы