2025年3月31日 星期一

快速切換網路介面卡設定

場景1: 筆電有線網路連接內部路由器與PLC連線

執行

netsh interface ip set address "[有線網路名稱]" static [PLC內網的IP位址] 255.255.255.0 [PLC內網的預設閘道IP位址] 1


場景2: 回到辦公室改回DHCP

執行

netsh interface ip set address "[有線網路名稱]" dhcp


上述指令可製成批次檔

(檔案編碼需為Big5)


參考來源:使用 netsh 設定網路卡 IP 位址 - 1

2025年3月26日 星期三

GX Works2 切換介面語系

問題:

要切換介面顯示語系,但發現工具>選擇語言是針對工程內容,而不是介面顯示。

解法:

1. 關閉GX Works2。


2. 開啟登錄編輯程式,路徑:

HKEY_CURRENT_USER\Software\MITSUBISHI\SWnDN-GPPW2\App\CodePage

編輯 DWORD (32-位元) 值

底數選十進位(D)

數值資料輸入如下:









數值資料內容說明

1252 西歐拉丁字母ISO-8859-1

950  繁體中文(大五碼)

936  簡體中文(GBK)

932  日文(Shift_JIS)


3. 重新啟動GX Works2即可。



參考來源:GX WORKS2 1.77F 語言檔問題,簡中,繁中,英文

2025年3月18日 星期二

Windows Forms建立SQLite連線時顯示Library e_sqlite3找不到的錯誤

版本:

VS2022 v17.13.3

SQLite-net v1.9.172


1. 使用新增Windows Forms App (.NET Framework)專案。

2. 安裝Nuget套件SQLite-net NuGet\Install-Package sqlite-net-pcl -Version [最新版]

3. 建立SQLite連線時顯示錯誤訊息:Library e_sqlite3找不到








解法:

1. 降版SQLitePCLRaw.lib.e_sqlite3至v2.0.7

參考來源:【茶包射手日記】.NET Framework 專案 SQLite 執行錯誤:找不到 e_sqlite3


2. 遷移package.config到PackageReference


























因為VS2022建立的Windows Forms App (.NET Framework)專案,

預設使用package.config管理Nuget套件,

但SQLite-net相依的SQLitePCLRaw NuGet套件在v2.1.0後需要使用PackageReference管理。


參考來源:Exception after updating from 2.0.8 to 2.1.0

參考來源:從 package.config 移轉到 PackageReference


2025年3月17日 星期一

Windows 11無法安裝.NET Framework 3.5

1. 在Windows 功能勾選.NET Framework 3.5 (包括.NET 2.0和3.0)

2. 在安裝進度完成後卻顯示Windows 無法完成要求的變更(錯誤碼: 0x80240021)









3. 先勾選SMB 1.0/CIFS 檔案共用支援>確定>安裝完成(可先不重開機)。













4. 再勾選.NET Framework 3.5 (包括.NET 2.0和3.0)>確定>安裝完成(要重開機)。








5. 即可安裝相依.NET Framework 3.5的軟體。

6. 再取消勾選SMB 1.0/CIFS 檔案共用支援即可。


參考來源:NET Framework 3.5 在Windows 11 下無法安裝

2025年3月7日 星期五

Windows新電腦快速還原安裝程式(含設定)

  1. 在舊電腦的準備工作

    本例"存放路徑"為使用者文件(%USERPROFILE%\Documents)

    1. 匯出已安裝程式清單檔案
      執行
      winget export --output [存放路徑]\[已安裝程式清單JSON檔]
    2. 複製已安裝程式設定檔資料夾到存放路徑
    3. 工作排程器>匯出>將工作XML檔儲存到存放路徑(如果有需要)
    4. 複製使用者捷徑到存放路徑(如果有需要)
    5. 複製使用者啟動資料夾捷徑到存放路徑(如果有需要)
    6. 記錄使用者路徑(Path)環境變數
  2. 在新電腦執行匯入

    1. 執行
      winget import --import-file [存放路徑]\[已安裝程式清單JSON檔]
    2. 將已安裝程式的設定檔資料夾重新指向存放路徑

      以下指令需以BatchScript形式執行

      :: 以下是檢查檔案是否為連結的範例
      :: 檢查.gitconfig檔案是否為連結
      DIR "%USERPROFILE%" | FINDSTR ".gitconfig" | FINDSTR "<SYMLINK>"
      
      :: 如果不是,刪除並建立連結到存放路徑
      IF %ERRORLEVEL% EQU 1 (
       DEL /Q "%USERPROFILE%\.gitconfig"
       MKLINK "%USERPROFILE%\.gitconfig" "[存放路徑]\.gitconfig"
      )
      
      :: 以下是檢查目錄是否為連結的範例
      :: 檢查.ssh資料夾是否為連結
      DIR "%USERPROFILE%" | FINDSTR ".ssh" | FINDSTR "<JUNCTION>"
      
      :: 如果不是,刪除並建立連結到存放路徑
      IF %ERRORLEVEL% EQU 1 (
       RMDIR /S /Q "%USERPROFILE%\.ssh"
       MKLINK /J "%USERPROFILE%\.ssh" "[存放路徑]\.ssh"
      )
      
    3. 匯入工作排程(如果有需要)
      執行
      SCHTASKS /CREATE /TN \%USERNAME%\[工作名稱] /XML "[存放路徑]\[工作XML檔]"
    4. 複製捷徑至使用者開始功能表以利後續釘選(如果有需要)
      執行
      XCOPY /S "[存放路徑]\[開始功能表捷徑資料夾]\*" "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\"
    5. 複製捷徑至使用者啟動資料夾(如果有需要)
      執行
      XCOPY /S "[存放路徑]\[啟動捷徑資料夾]\*" "%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
    6. 設定使用者路徑(Path)變數(如果有需要)

      以下指令需以BatchScript形式執行

      FOR /F "delims=" %%A IN ('PowerShell -NoProfile -Command "(Get-ItemProperty HKCU:\Environment).Path"') DO SET UserPath=%%A
      SETX Path "%UserPath%";[使用者路徑清單(以分號區隔)]
      SET UserPath=
      

2025年3月4日 星期二

使用ProcDump+WinDbg定位.NET Framework問題(筆記)

 1.首要條件

專案>右鍵>屬性>建置>輸出>進階(D)...>輸出>偵錯訊息(E):>僅限 Pdb












參考來源:.NET 知識高裝檢 - .pdb 檔、編譯最佳化與偵錯


2.執行ProcDump生成記憶體傾印檔案

procdump -accepteula -ma [TargetApp.exe] [D:\target-app_dumps]

  • -accepteula:自動接受終端使用者授權協議(EULA),避免在執行時出現提示

  • -ma:生成完整的記憶體傾印,包括所有的記憶體內容,提供最詳細的調試資訊

  • TargetApp.exe:目標應用程式的名稱,即需要監控的程式

  • D:\target-app_dumps:指定記憶體傾印檔案的儲存路徑


參考來源:ProcDump - Sysinternals


3.執行WinDbg分析問題


起手式
執行!sym noisy
    • 啟用詳細符號載入
執行.sympath+ [Pdb路徑]
    • 設定符號搜尋路徑
執行.reload
執行ld*
    • 強制載入符號
執行.loadby sos clr
    • 載入.NET類別資訊偵錯用
執行.chain
    • 檢查載入是否成功
再依問題類型下對應指令查詢

參考來源:真实案例大全

KeePassXC自動輸入{CLEARFIELD}無法清除欄位內容

由KeePass改用跨平台的KeePassXC,

發現原本設定的自動輸入{CLEARFIELD}不會清除已有文字存在的欄位內容。


解法:

將{CLEARFIELD}改為^a{DELETE}即可。

參考來源:{CLEARFIELD} not working on Windows 11 either (with SQuirreL)