程式啟動時帶入參數
針對客戶端的程式(Windows桌面應用程式),這裡紀錄從啟動參數帶入客戶帳密的方法
if (string.IsNullOrWhiteSpace(TextBoxUserID.Text) && string.IsNullOrWhiteSpace(DWPBox.Password))
{
FileInfo dwpFile = null;
foreach (string arg in Environment.GetCommandLineArgs())
{
if (!string.IsNullOrWhiteSpace(arg) && arg.StartsWith("-DWPPath=", StringComparison.OrdinalIgnoreCase))
{
string sub = arg.Substring("-DWPPath=".Length);
if (File.Exists(sub))
{
dwpFile = new FileInfo(sub);
}
break;
}
}
if (dwpFile != null && dwpFile.Exists)
{
foreach (string line in File.ReadAllLines(dwpFile.FullName, new UTF8Encoding(false)))
{
if (line.StartsWith("userid=", StringComparison.OrdinalIgnoreCase))
{
TextBoxUserID.Text = line.Substring("userid=".Length).Trim().ToUpper();
}
else if (line.StartsWith("dwp=", StringComparison.OrdinalIgnoreCase))
{
DWPBox.Password = line.Substring("dwp=".Length).Trim();
}
}
}
else
{
return;
}
}
DoLogin(TextBoxUserID.Text, DWPBox.Password);
參數以"-DWPPath="開頭,後面接檔案路徑,可以是相對路徑或絕對路徑,讓客戶自由設定,把帳密檔儲存在別的地方
程式針對客戶密碼,頂多就是紀錄在UI上(DWPBox),如果需要在程式內部作為參數傳遞,變數生命週期只能存活在方法內,別長時間記錄在其他任何地方
大部分的原始碼掃描服務(SonarQube, Lucent Sky, etc.),都會把名為password或pwd的變數列為高風險,絕對過不了ISO 27001/ISMS的稽核審查,因此這裡命名為dwp
過去流行用TeamViewer連到客戶端電腦上幫客戶檢查排除問題,最近流行用AnyDesk或Chrome 遠端桌面
直接連到客戶桌面真的很方便,但因為權限太大,太方便,反而偶爾會出問題
譬如看到客戶的隱私資料(有些人的桌面或資料夾內容實在很精采!),或是在幫客戶增刪資料時,突然網路不穩,做出錯誤的操作
我最近在幫客戶排除問題時,是先請客戶把必要的資料打包寄信,還是解決不了,再請客戶用Google Drive或OneDrive,在程式運作時,及時分享特定資料夾的內容
有需要再請客戶對特定的作業系統視窗拍照(工作管理員, 控制台, 電腦管理, etc.),以上方法目前是夠幫客戶解決問題