1

C#アプリケーション内からコマンドラインにアクセスする必要があります。「args」パラメータを使用すると、不一致の二重引用符を検出する方法が見つかりません。

現在作業中のアプリケーションには、コマンドラインから渡す文字列を暗号化するオプションがあります。

例えば。

program.exe -encrypt somestring

結果:

EZs/6rWxvJ82+VE8unJ0Xw==

ここで、ユーザーがこれを入力すると、次のようになります。

program.exe -encrypt somestring extra characters

「somestring」以降のすべてを無視します(「args」パラメーターを使用して残りの値にアクセスできます)。

二重引用符を使用すると、これを簡単に回避できます。

program.exe -encrypt "somestring extra characters"

もちろん、埋め込み引用符を使用する場合は、「\」でエスケープできます。

program.exe -encrypt "somestring \"extra\" characters"

この問題は、ユーザーが次のように入力したときに発生します。

program.exe -encrypt "somestring extra characters

また:

program.exe -encrypt somestring ex"tra characters

プログラムは二重引用符を完全に無視しますが、これはユーザーが期待していたものではありません。このようなケースを検出し、引用符の不一致/エスケープされていないことをユーザーに通知したいと思います。そうしないと、暗号化されたバージョンの間違った文字列になってしまう可能性があります。

4

2 に答える 2

6

これは、コマンドラインが引数をC#プログラムに渡す方法です。それを変更することはできません。ただし、コマンド引数文字列全体にアクセスして、自分で検証を実行することはできます。

MSDN:Environment.CommandLineプロパティ

于 2012-06-20T11:15:04.453 に答える
0

手動で行ってください。引数の後に-encrypt引数が1つしかないことを確認してください。そうでない場合は、次の引数が二重引用符で始まり、最後の引数が二重引用符で終わっていることを確認してください。これらのいずれも発生しない場合は、ユーザーにカスタムエラーをスローします。

後の次の引数-encryptが二重引用符で始まり、最後の引数が二重引用符で終わる場合は、自分で文字列を作成するArray.Copyか、そのようなものを使用します。

于 2012-06-20T11:10:07.963 に答える