BinScope und ArgumentException: Ungültige Zeichen im Pfad

1035
jww

Ich fange ein, System.ArgumentException: Illegal characters in pathwenn ich versuche, ein Skript BinScopevon der Befehlszeile aus zu schreiben . BinScope ist ein SDLC-Prüftool von Microsoft. Die vollständige Ausgabe finden Sie unten.

Die Ausnahme beansprucht einen illegalen Charakter, aber sie sagt mir nicht, was der illegale Charakter ist und wie er sich befindet. Ich bin irgendwie ratlos, weil alle Optionen (laut binscope.exe /?) gültig sind und alle Pfade in Anführungszeichen stehen.

Welches Zeichen (oder Zeichen) ist im Pfad illegal? Wie kann man den beleidigenden Charakter bestimmen?


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) 

Und:

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 Antwort auf die Frage

1
wmz

Escape (doppelt, wie in Desktop\\") oder letzter Backslash entfernen /outdir "C:\Users\Audit\Desktop\"- Die Art und Weise, wie es analysiert wird, erzeugt [ Escape -Zeichen] unausgeglichenes Anführungszeichen char ( "), das im Pfad ungültig ist.

btw - Von Microsoft-Referenz hier entnommen: http://msdn.microsoft.com/de-de/library/system.io.path.getinvalidpathchars%28v=vs.110%29.aspx

Auf Windows-basierten Desktop-Plattformen können ungültige Pfadzeichen die ASCII / Unicode-Zeichen 1 bis 31 sowie Anführungszeichen ("), kleiner als (<), größer als (>), Pipe (|), Rücktaste (\ b) enthalten., null (\ 0) und tab (\ t).

Bearbeiten: Zusätzliche Informationen zu den Regeln für die Analyse von C # - (und auch C, C ++) - Regeln unter Windows (entnommen von http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx ):

Wenn ein doppeltes Anführungszeichen auf zwei oder eine gerade Anzahl von umgekehrten Schrägstrichen folgt, wird jedes fortlaufende umgekehrte Schrägstrichpaar durch einen umgekehrten Schrägstrich ersetzt und das doppelte Anführungszeichen wird entfernt. Wenn ein doppeltes Anführungszeichen auf eine ungerade Anzahl von umgekehrten Schrägstrichen folgt, einschließlich nur einem, wird jedes vorherige Paar durch einen umgekehrten Schrägstrich ersetzt und der verbleibende umgekehrte Schrägstrich wird entfernt. In diesem Fall wird das doppelte Anführungszeichen jedoch nicht entfernt.

Das war es, danke ... Kaum zu glauben, dass das Programm einen vom Benutzer angegebenen Pfad nicht ohne Massagen konsumieren kann. Ich habe mich wirklich bemüht, etwas leicht zu handhaben, wie zitierte Pfade und eindeutige Verzeichnisse. jww vor 9 Jahren 0
@jww sicherlich ein Versehen (wie vom Benutzer nicht erwartet - sofern nicht dokumentiert), aber es ist ein Nebenprodukt von c # args Parser. Sie könnten versuchen, einen Fehlerbericht einzureichen (wahrscheinlich unter VS Umbrella) wmz vor 9 Jahren 0