簡體   English   中英

.exe 文件在我的計算機上運行良好,但在其他計算機上運行不正常

[英].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.

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