簡體   English   中英

使用C#訪問命令行

[英]Accessing the commandline using C#

我需要從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

該程序將完全忽略雙引號,這不是用戶期望的。 我想檢測類似的情況,並通知用戶有關不匹配/未轉義的引號,否則它們可能最終得到錯誤字符串的加密版本。

這是命令行將參數傳遞給C#程序的方式。 您無法更改。 但是,您可以整體訪問命令參數字符串並親自執行驗證。

MSDN:Environment.CommandLine屬性

只需手動執行:檢查-encrypt參數后面是否只有一個參數,如果不是,則下一個參數以雙引號開頭,最后一個參數以雙引號結尾。 如果這些都不發生,則向用戶拋出一個自定義錯誤。

當后一個參數-encrypt加上雙引號開始,最后一個參數結束與雙引號建立自己使用字符串Array.Copy或那樣的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM