Pages

Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

2024-03-24

解決AnyDesk遠端桌面滑鼠多選無法釋放的問題

當你使用AnyDesk遠端操作時,發現滑鼠會多選項目卻無法釋放時,彷復就是Shift鍵被一直按著的症狀,這問題Issue目前仍出現新版本8.x上面,同樣的環境使用TeamViewer連線卻無此問題。

Unrelease Items multi-select state

我曾試過強迫屏幕的刷新,沒任效果,控制遠端滑鼠以remote為準,偶爾成功卻仍會出現,迄今仍無法完全避免出現shift鍵一直按著的問題。

Follow Remote Curosr

搜尋網文很少有描述此現象的bug回報,在此篇文章有提供作者呼叫出遠端Virtual Keyboard虛擬鍵盤後按點Shift鍵,就可以釋出這些滑鼠多選問題。當顯示虛擬鍵盤及雙擊其上的Shift鍵,可以解除遠端滑鼠游標被多選的狀態,但這情況仍會再發生,原因不明,目前只有這樣暫時解決此現象

Virtual Keyboard

2023-04-24

TextCrypt字串加解密工具

撰寫應用程式時,我們常會將設定檔*.config裏的敏感字串(如資料庫連線)加密以防止被人任意窺看,再於Runtime執行時依特定Secret Key作字串解密。然而明文字串隨時可能修改,因此我們需要一個簡易的工具來幫快速產生已加密的字串值。
此工具支援比較常用的對稱式可逆加密法:



2023/04/24 Version History:

  1. 新增Base64Url加解密功能。
  2. 升級.NET Framework版本,由4.6升級至最新4.8

2015/08/14 Version History:

  1. 新增XOR+Salt4的原創加密方式,它的作法簡單卻效能高,且可轉換成各種程式語言(因為原理簡單)。
    明文20字,加密後的長度為32值,剛好與一般密碼長度一致(MD5/GUID)。
  2. 新增XOR+MD5加密法,它是將密碼MD5 Hash後(16-byte),與明文作XOR運算而得到密文。
  3. 增加文字顯示的字串長度值,以觀測密文與明文之間的長度變化。
  4. 更換App Icon.
2014/10/06 Version History:
  1. 新增輸出字串轉成HEX十六進位顯示,這可以驗證RC4加密後的加密陣列。
  2. 升級方式,exe+config檔全部overwrite舊檔。
2014/05/05 Version History:
  1. 新增標準的AES-128/256加密法,使用32位長的Salt產生Hash Key/IV bytes,增強安全性。
  2. 新增GUID/UUID產生器。
  3. 新增Input/Output文字方式的複製、清除及大小寫的功能。
  4. 重新排序CryptType的下拉項目順序。
程式下載:(.NET 4.8 Required, Portable, V23.4.24, Size: 394KB)
[
OneDrive]

2017-06-28

VMware奇怪的網路NAT(VMnet8)不通

在一次升級VMware 12.5.3至15.5.5版本時,升級過程貌似一切正常,但虛擬機原本運作好好的NAT網卡,卻出現「Could not connect 'Ethernet0' to virtual network 'VMnet8'」的奇怪錯誤,無法上網也無法和HOST OS互PING相連。即使把該虛擬機網卡移除再新增,也無法連接網卡。

由於我的NAT網段不是用預設值的,估計裏頭亂掉了,經過查網是必須恢復回預設值。因此開啟VMware主畫面,在功能表「Edit/Virtual Network Editor」畫面的左下角,點擊「Restore Defaults」回復預設值按鈕。

image

它會整個VMware網卡驅動重新整理,變成預設的網段,再調整回自己慣用的虛擬網段即可。

2017-05-09

移除Win10預設所有Apps軟件

如果你的Win10電腦是專門工作用途,而且用不著WIN10預設安裝APP的話,可以使用下面教學文章去移除所有預設安裝的App程式。若之後想要安裝,再使用其Store商店程式作單一安裝即可。

How To Uninstall Default Apps In Windows 10
http://www.intowindows.com/how-to-uninstall-default-apps-in-windows-10/

簡單步驟:

  1. 以Admin角色執行「Windows Powershell」程式,輸入以下指令即可一鍵移除所有預設安裝的APP。
    Get-AppxPackage -AllUsers | Remove-AppxPackage

    image
  2. 完成預設App移除工作,就是這麼簡單。

我也挺喜歡Win2016的工作介面環境,它使用WIN10的系統核心卻沒有多餘花俏的APP,只可惜SERVER版對一些硬件的驅動程式採事先驗證,無法像WIN10能插上就無痛驅動,因此還是選擇時常出新UPDATE的WIN ISO檔為宜。

2017-04-04

Visual Studio 2017 Update

VS2017在Offline Installation離線安裝未能提供ISO光碟檔被人詬病,不過它的優點是若只開發C++ Native程式,只需要下載安裝3GB空間而己,而不需要一般的20GB。然後,這理由未能說服離線安裝需求的人,畢竟微軟應該把最常用的Layout組合(C# ASP.NET/WinForm),製成一份20GB ISO檔供離線下載才對。

Create an offline installer for Visual Studio 2017 | Microsoft Docs
https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio

幸好有熱心網友Myhammad提供離線Layout的RAR壓縮檔供人下載:

Visual Studio 2017 Editions – Google Drive
https://drive.google.com/drive/folders/0B78wbPvH6XGZcFg4bF9LS3QtWk0

VS2017 - Google Drive

然而這種Component模組安裝方式的架構,很適合之後的VS2017 Update更新,加速了Bug修正的周期,以VS2015的更新方式更快速。

Visual Studio 2017 Release Notes
https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

VS2017 - Update Log

2016-10-12

掛載USB隱藏分區(Hidden Partition)

要將PE系統製作至一個USB開機碟時,通常它會分成兩個分區(Partition),分別為下圖編號1的資料區(Data)及及編號2開機區(Boot, Hidden),並且把開機區設定隱藏+活動(Active+Hidden),如此插入USB碟時,系統只會出現Data區。

Partition List

Partition Unhide

要升級PE工具的新版本,一般做法是直接替換開機區內的*.wim (Windows Image Manager)系統映像檔即可。但是開機分區雖能夠取消隱藏,卻無法掛載盤符至系統裏來操作,因為一般分區工具只允許磁碟第1主分區位置才能掛載盤符。為了解決這問題,我們可以使用BOOTICE工具來掛載任一隱藏分區至系統。

操作步驟為:

  1. 開啟BOOTICE工具,選擇「Physical disk > Destination Disk > Parts Manage」,然後選擇
    BOOTICE Parts
  2. 選擇隱藏分區,點擊「Assign Drive Letter」按鈕,即可在系統載掛此分區。
    BOOTICE Assign Drive
  3. 解開新版PE ISO檔,將boot.wim覆蓋掉隱藏區的舊檔,再點擊BOOTICE裏的「Remove Drive Letter」按鈕即可恢復隱藏。
    BOOTICE Remove Drive
  4. 完成隨身碟的PE版本升級。

2016-05-04

LINQPad Command Script自動化

我使用LINQPad不是用來查LINQ或SQL,而是把它當作程式產生器,增加編程的工作效率。後來發現它有提供Command-Line的執行模式(lqrun.exe),可以讓伺服器主動透過Schedule排程,定期自動執行一些管理工作,例如每日備份資料庫,FTP上傳到異地備援主機,並刪除超過30天前的舊檔案。你不再需要學習語法難用的Batch File或其他Shell Script,單單純純地執行C# Script即可。

LINQPad免費版本在執行階段沒什麼限制,放在伺服器端跑Task Scheduler批次工作,十分完美搭配。

"C:\LINQPad\lprun.exe" "C:\Task\hello.linq"

Task Scheduler Action

關於更多LINQPad內建功能,請詳見以下連結:

LINQPad Command-Line and Scripting
http://www.linqpad.net/lprun.aspx

LINQPad Extension Methods - Stack Overflow
http://stackoverflow.com/questions/3555317/linqpad-extension-methods

2016-04-29

System UpTime系統已運行時間

在Win7/2008以後,使用Task Manager可以查看系統已運行時間統計,但舊系統XP/2003系統裏必須使用指令systeminfo查看開機時間,此指令也會因執行權限而有所受限,只能靠微軟提供的外掛Command指令uptime工具。
image
為了簡化流程,因此開發了一個簡單的UI工具來查詢系統已運行時間。顯示介面支援多國語言顯示框架,用戶可以自行擴充其他語言及字詞(在Language子目錄仿作)。
  image
為了能讓UI介面高客製化,相關設定皆定義在Config.json檔中,您可自行修改。例如畫面的長寬、重疊置頂(TopMost)、字體Size皆能調整,並支援畫面上的時間字串格式化顯示、自動刷新間隔秒數。
image

Version History:

2016/04/29:
  1. 設計此工具的專屬Web網站,提昇軟件品質形象,也方便用戶查看及下載。
  2. Config中的下載網址異動默認值,相容最小版次值為20160429。
2016/04/22:
  1. 將畫面自訂長寬Size調整納入「Save Preferences」的儲存範圍內,它會自動計算表單的Width/Height Offset的值。
  2. 表單預設寬度,由原本3位數的Days,縮減至2位數的寬度。

Download: (.NET 4.6.1 Required, 綠化免安裝)

前往下載頁面

2016-04-20

完美將TXT轉成電子書epub/mobi檔

要將TXT轉換成epub/mobi電子書格式,很多人一開始會選用online-convert, Convert.Files等線上轉換服務,但它轉換速度不快,對章節擷取不一定正確,也有人用Clibre這套Windows下知名的電子書閱讀軟件來轉換,但它內建的轉換操作介面太過複雜。因此我推薦使用EasyPub這個綠化工具程式,只需要幾個很簡單的步驟,就能把TXT純文字檔轉成高品質、排版性佳的epub/mobi電子書格式。
以下是轉換步驟:
  1. 網上搜尋被推薦的書名,並下載該書TXT純文字檔案,很多網上連載小說網站均有提供。
  2. 利用ConvertZ中文繁簡工具,將TXT檔案BIG5/GB2312轉成UTF8編碼的格式(檔案Size會變大)。
  3. 開啟下圖EasyPub工具,拉入或指定來源TXT檔案(編號1),輸出副檔名(編號2)預設是.epub檔,若想轉成Kindle格式,改成.mobi檔即可。
    image
  4. 具有章節索引對於電子書查閱很重要,先打開TXT檔我們發現下圖40行的章節寫法規則,是前面有空白字元,接著「第X章 章節名稱」,因此它的編寫規則都是上圖編號3的方式,點擊編號4按鈕「章節編輯」來預覽判讀結果。
    image
  5. 程式會依章節規則取出符合的項目名稱,但此TXT檔例子它的每個章節都有重複名,因此可以勾選下圖編號2,凡該章節下的內文不超過1行則刪除,即可呈現不重複的章節項目(下圖編號1)。
    image
  6. 針對這本書的相關規則設定,你都可以儲存起來(*.epsav),若該TXT檔是連載中的小說,你就可定期依以上步驟快速產生完美的轉換過程。最後回到主畫面,點擊「開始轉換」按鈕,就可以產生epub及mobi檔案。
  7. 使用Clibre閱讀程式來觀看效果,章節判讀很正確,下圖編號3章節名稱呈現會有區塊底色,但實際在手機電子書軟件「Moon+ Reader」或Kindle實際閱讀時,均不會有這樣礙眼的底色。頁面的配色效果,也可以在EasyPub工具的「定製CSS」中自訂。
    image

2016-03-30

修正LibreOffice Calc加總欄位不會自動更新問題

為了減少對微軟Excel的倚賴,我逐步慢慢把平時常用Excel記帳表轉成免費軟件LibreOffice Calc 5.x軟件,當然我是利用Calc開啟舊Excel檔,經過調整後再另存成Open Document Spreadsheet  (*.ods)格式。有一天發現此檔的加總欄位SUM值,竟然不會在區間欄位值異動時自動計算加總,查了一下原因,原來是Calc對於Excel檔案及其他軟件的ODS檔並不會主動重新計算,算是不相容的理由。
Sum Columns

在Calc的「Tools/Options/LibreOffice Calc」可以看到這樣的開啟選項。此處不需要調整為「自動重計算」,因為不相容的檔案最好保持原來初值就好,強制重算反而會有計算錯誤問題。

Calc Formula

解決之道把目前的ods檔另存(Save a copy)成Excel檔(*.xlsx),然後使用Calc開啟這個另存的xlsx檔,再作一次另存成*.ods檔案(此時就是Calc支援的新ODS版本),就可修正不會自動加總的問題了。

Save as type

若你不是重度使用微軟Excel的財務/會計,或需和別人檔案交換的需求,使用開源免費的LibreOffice是一個不錯的選擇,雖然它的UI介面沒有商業軟件那麼細緻但也趨近了,而且LibreOffice持續維護新版本也有免安版本(不到200MB),很值得推薦。

2016-02-25

Movie Renamer 電影下載批次命名工具

現在流行的電影下載檔,通常是至少720P以上的內嵌字幕MP4超清版本,以單檔獨立存在,因此不再需要像以往用目錄方式來歸類整理。下載好的電影檔名通常含有片名及畫質尺寸、字幕言語等資訊字串,因此若能以程序自動判斷這些命名的潛規則,就可以快速批次更名為以下的格式。

image_thumb

因此我寫了一個用滑鼠拖拽操作的電影更名工具,以「檔案號日期命名工具」該篇介紹為技術核心基礎,新檔名除了能自訂輸出格式字串外,還能定義特定關鍵字來推導形成電影的語言地區。例如下圖編號1,它定義輸出檔名的格式Pattern,而每種Pattern在下面更有詳細的推導關鍵字及設定,例如NamePattern可以中文簡轉繁,DatePattern可以使用下載日期或目前時間。

image_thumb3

自訂的命名設定可寫入Config.json檔,支援多個電影檔案直接滑鼠拖拽即可完成更名。Config裏的設定意義,請以默認值作效果推理,拿些空文字檔測試即可了解。

image_thumb1

檔案下載: (綠化免安裝,但需要支援.NET Framework 4.6.1)

百度雲盤下載 (MovieRenamer_20160225.rar, 285KB)

Release History (2016.02.25):

  1. 多檔案批次拉拽命名,使用Date,Name,Nation三種命名Pattern自訂化格式化輸出。
  2. NamePattern可以依格式自行新增推導國家語言的關鍵字,數量不限。
  3. NET執行版本提升至4.6.1。

2016-02-15

ESET NOD32 9.x排除掃毒路徑

要排除某程式不被ESET防毒軟件自動掃描誤判,可以手動加入掃毒排除裏,在「Setup/Advanced setup/ANTIVIRUS/EXCLUSIONS」裏設定排除目錄:

image

排除的語法為:

image

ESET Smart Security - Online Help
http://help.eset.com/ess/9/en-US/?idh_exclude.htm

2016-01-16

VS2015的Build熱鍵更改

進入ASP.NET MVC的時代,只能使用Web Application專案,它的任何CS源碼異動,必須重新Compile編譯才能生效。雖然它比ASP.NET 4.0的即改即譯Web Site專案來得麻煩,但在Release時階段不需要透過Publish Build來打包,能夠快速替代其主要的專案DLL檔,是其最大的優點。

為了能快速編譯方案,我們可以在VS2015下設定以下常用功能的熱鍵HotKey。
image

在菜單「Tools/Options…」下,其對應的Keyword項目分別如下面 (請對應編號項目)。Build Solution預設值是Ctrl+Shift+B,改成F6,而Build Project預設無設定,則改成F7,因為預設的Compile Project熱鍵是Ctrl + F7。

image

2015-12-08

檔案版號日期命名工具

一般下載的應用程式安裝檔案,我偏好在其檔名後面加上版號+日期,以利分類收藏。例如下圖編號1的檔案,它的右鍵內容含有檔案版號(編號2)、產品版號(編號3)及修改日期(編號4),最後產生為編號5的新檔名。

image

寫了一個更名工具,只要把多選的檔案或目錄拉入這視窗,就能批次完成上述的更名動作。

 App Screenshot

由於每個人命名習慣及風格不同,因此我把命名規則邏輯寫在Config.json設定檔中,以方便每個人客製化。

image

設定檔的參數設定,意義解釋如下(Ln=行號):

Ln:2  設定檔版號,若太舊版本需要刪除Config.json檔,再讓程式自動產生。
Ln:3  檔案名稱的命名格式化字串 {變數名}
Ln:4  目錄名稱的命名格式化字串
Ln:6  替換變數名稱,你也可以自己命名。
Ln:7  檔名是否轉成UTF8繁體中文? (方便中文簡體檔名轉換)
Ln:11 版號會自動抓檔案屬性的FileVersion,若要使用產品版號則設為true。
Ln:12 目錄名稱缺乏版號版號,但也可以用日期變數來當版號。
Ln:16 日期變數預設是以目前時間產生,可設定.NET日期格式化字串。
Ln:17 若是想以檔案修改日期,則UseModifiedDate設為true即可。

檔案下載: (綠化免安裝,但需要支援.NET Framework 4.6)

百度雲盤下載 (VersionRenamer_20151208.zip, 310KB)

貼心功能:

  1. 檔案版號若為空時,程序會判斷格式化字串中的{version}變數前面字元若為空白,若刪除該空白字元。
  2. 不僅檔案能命名,目錄也可以更名,支援多檔或多目錄的拉曳方式。
  3. 更名失敗時,彈出錯誤訊息視窗。

2015-09-05

LINQPad強制不升級

LINQPad軟件本身強迫自動升級至最新版本,沒有任何設定選項能取消AutoUpdate。依官方文件問答,若不想升級的話,必須設定啟動程式參數-noupdate,以下是建立「LINQPad NoUpdate Loader.bat」的內容:

@echo off
start /b LINQPad.exe -noupdate

若不幸已自動升級了,就算把舊版本檔案蓋回來,啟動時仍會被蓋新檔。原來LINQPad自動升級的新版本下載會放在「C:\ProgramData\LINQPad\」目錄裏,它一比對到舊版本,就會蓋檔,因此刪除此目錄就可避免強迫升級。

LINQPad Logo

2015-08-19

NuGet Source Unreachable問題

當在VS裏使用NuGet Package Manager Console安裝套件時,有時候會出現以下錯誤:
The source at nuget.org [https://www.nuget.org/api/v2/] is unreachable. Falling back to NuGet Local Cache at XXX.

NuGet Source Unreachable

建立新的方案,則NuGet運作正常,估計某個地方出錯了。重開VS程式或可修正,但急於當下,可直接加下-Source選項指令:
PM> Install-Package bootstrap -Source nuget.org

網上討論連結:
c# - Source unreachable when using the NuGet Package Manager Console - Stack Overflow http://stackoverflow.com/questions/24025409/source-unreachable-when-using-the-nuget-package-manager-console

2015-07-29

軟件授權序號發行

以前覺得軟件授權用序號方式很容易被破解,因此就實作硬體ID+網路啟動的方式,但站在User的角度其實輸入註冊序號是比較簡單的,至少不需要連網。一般簡單註冊序號的實作方式,就是將用戶資訊+到期時間加密寫成二進位檔。

加密內容方式應該能隨DateTime變化而內容不同,以防止被推算竄改,加密方式可以加上隨機byte陣列Salt(鹽)混淆即可。

License KeyGen

關於License授權物件的寫作,多數人大概會優先使用.NET二進化序列化技術,不過我不喜歡這類帶有強型別的序列化行為(因為序列化的前面Bytes都是描述類別不會變化,很好推算加密私鑰),最主要也因為別的程式語言不容易針對檔案作反序列化。

因此我使用「Packet封包結構與解析」文件的格式來包裝License物件,因為它有很好的擴充性,也是C/C++很好理解處理的模式。

當然,.NET軟件上的檢查註冊機制,很容易被反組譯給註解掉IL執行指令,這部分可以在程式裏加上很多空的函式來混淆別人的分析,授權檢查不要只回傳Boolean值就了事,而是在多處關鍵處去授權物件內的值作簡易計算比對,即使發現授權檢查被竄改也不要立即彈視窗警告,使用一個%機率出現怪現象即可。

最後,防守到一個程度被破解就算了,千萬不要為了授權檢查而混淆程式執行效能,做出本末倒置的事才好。畢竟,軟體上的授權檢查,都是防君子不防小人的。

2015-06-23

讓TeamViewer Portable變成開機自動執行

TeamViewer是套挺好用的遠端控制工具,尤其它能穿越防火牆、傳輸檔案,更棒是我能利用它的上線狀態監控遠端主機的運作正常與否。通常我會自官網下載Portable免安裝版本:

TeamViewer Portable

但如何讓Portable也能隨系統自動執行呢? 編輯官方下載包目錄下「TeamViewer.ini」,將nosave由1改為0即可。
 TeamViewer.ini

重新啟動程式,在選單「Extra> Options> General」,就會多出一個自動啟動的選項,勾選它並設定連線密碼。預設的Portable版壓縮ZIP包裏少了「TeamViewer_Service.exe」這個檔案,它能在完整版裏找到,得把它放入目錄才行。

Start with Windows 

它會自動建立背景服務如下圖項目,如此一來,就不用安裝TeamViewer Host版本於遠端主機內了。

image

服務項目是呼叫TeamViewer目錄下的「TeamViewer_Service.exe」,與「TeamViewer.exe」桌面互動程式不一樣,在MultiUser多用戶模式下,兩者的TeamViewer ID也不同,後者會隨著系統登入就消失了,而使用隱藏的ID即可在登出時仍能連線。

image

若想要移除服務,也使用以下的Batch Script來快速移除。
@echo off

rem ---------------------------------------------------------------
rem Remove TeamViewer Windows Service.
rem ---------------------------------------------------------------

set SvcName=TeamViewer

sc stop "%SvcName%"
sc delete "%SvcName%"

pause

2015-06-11

VS2013開啟多行的Tab顯示

VS2013開發環境裏,想要讓開啟的文件檔上方Tab作多行呈現是沒辦法的,雖然太多排Tab會顯亂,但一般2-3並排顯示有它的切換便利性。VS有Pinned Tabs釘住頁籤的功能,它們不會被卷縮入左側消失,而有依視窗Size自動多行多排的效果。但是不太可能每開一個文件就花費動作去釘住所有Tab(沒預設值能改),而且默認Pinned Tabs會和一般Tab混排在一起,造成切檔的混檔。

image 

在VS2013功能選單「/Tools/Options/Environment/Tabs and Windows」中可設定Pinned Tabs與其他Tab分離獨立顯示。

image

如此,常常參照的文件就可設成Pinned Tabs顯示在上面,而下面一般Tabs就放臨時性開啟的文件。

image

2015-06-03

LINQPad程式產生器

LINQPad是一套測試LINQ與SQL的免費工具(未開源),小巧又綠化免安裝,是測試.NET片段程式碼(Code Snippet)挺好的利器。我看重的是它的語法高亮提示及MyExtension延伸函式章的架構,可以用來寫程式產生器,例如一個資料庫的Table CRUD後端的程式碼,配合UI命名規格及欄位名稱、型別,就可以產出自己架構的程式碼。

CRUD Generator

產生用完隨拋的POCO類別也沒問題:

POCO Generator

甚至平時下載的美劇,也能用滑鼠拖拉批次命名: (此WinForm由LINQPad產生,也能隨時調整取名規則Script Code)

Drama Rename

以往用T4 TemplateCodeSmith Generator產生的功能,不是依賴性重就是要付費購買,LINQPad提供另一項不錯的選擇。