[英].exe file runs perfectly fine on my computer, but doesn't run perfectly on others
我有一個特殊的問題,即從 Visual Studio 構建的 my.exe 在我的計算機上運行並完美運行,但是當我在其他人上測試它時,它無法按預期工作。 特別是我有一個按鈕,單擊該按鈕將斷開或連接我們的永遠在線 VPN 連接:
private void _button_ConnectVPN_Click(object sender, EventArgs e)
{
if (Button_ConnectVPN.Text == "Always-On VPN: On")
{
_disableTaskScehdule();
_disconnectAlwaysOnVPN();
}
else if (Button_ConnectVPN.Text == "Always-On VPN: Off")
{
_connectToAlwaysOnVPN();
}
}
_connectToAlwaysOnVPN() 和 _disconnectAlwaysOnVPN() 這兩種方法工作得非常好,可以按預期斷開或連接 VPN。
然后我有了這個,它會根據 Always-On 的狀態不斷更新按鈕的背景顏色和文本:
Timer aTimer = new Timer();
aTimer.Interval = 500;
aTimer.Tick += _updateConnectionStatus;
aTimer.Start();
private void _updateConnectionStatus(object sender, EventArgs e)
{
if(_checkForVPNInterface() == true)
{
Button_ConnectVPN.Text = "Always-On VPN: On";
Button_ConnectVPN.BackColor = System.Drawing.ColorTranslator.FromHtml("#ACD1AF");
}
else if (_checkForVPNInterface() == false)
{
Button_ConnectVPN.BackColor = System.Drawing.ColorTranslator.FromHtml("#F47174");
Button_ConnectVPN.Text = "Always-On VPN: Off";
}
}
如前所述,當我運行它時——無論是通過 Visual Studio 還是它創建的 .exe 文件——它都能完美運行,並且背景顏色 + 文本也會相應更新。 在我的測試機器上,文本+背景顏色保持不變。 我什至嘗試在我的測試機器上安裝 Visual Studio 並將整個解決方案復制到它並嘗試通過 Visual Studio 運行它,但它仍然無法正常工作。
我最初的想法是我的電腦上安裝了一些東西,這使它完美地工作——盡管我不知道是什么。
任何指針,評論或任何東西都非常感謝!
編輯:被要求顯示 _checkForVPNConnection() 的方法
private bool _checkForVPNInterface()
{
var lastLine = File.ReadLines(ConfigurationManager.AppSettings["logPath"]).Last();
if (NetworkInterface.GetIsNetworkAvailable())
{
NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface networkInterfaces in interfaces)
{
if (networkInterfaces.Description.Contains("Always-On VPN") && networkInterfaces.OperationalStatus == OperationalStatus.Up)
{
if (lastLine == "Always-On VPN - Disconnected")
Logger.WriteLog("Always-On VPN - Connected");
return true;
}
}
}
if (lastLine == "Always-On VPN - Connected")
Logger.WriteLog("Always-On VPN - Disconnected");
return false;
}
正如@canton7 在他的評論中指出的那樣,我在測試機器上運行了調試,發現網絡接口都有“永遠在線的 VPN”(我需要)和“永遠在線的 VPN 用戶隧道”——它總是在線的,即使連接斷開。
因為我有:
networkInterfaces.Description.Contains("Always-On VPN") && networkInterfaces.OperationalStatus == OperationalStatus.Up
它按照(糟糕的)設計工作;)
我現在改變了:
networkInterfaces.Description.Contains("Always-On VPN")
至:
networkInterfaces.Description.Equals("Always-On VPN")
它的工作就像它應該的那樣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.