技術分享

[WinPE] EaseUS Todo Backup 還原新硬碟

Todo Backup Free 10.0 是一套僅有英文介面的全機備份還原軟體,採用 Win10 的 WinPE,可以使用行動碟開機,例如 GPT 4TB ,特別的是可以用在純 USB 3.0 環境。

大部分備份還原軟體可能會發生無法使用 USB 3.0 開機或是插 USB 3.0 的鍵盤、滑鼠不支援,Todo Backup Free 可解決這個問題。

http://www.todo-backup.com/products/home/free-backup-software.htm

但 Todo Backup Free 有個傻問題,當你要還原到新硬碟時,會因為硬碟沒規劃磁區,因此選不到磁碟,無法還原。

解決方案是呼叫 Windows 內建的 Diskpart.exe:

  1. 主畫面工具列右側選 [Tools]
  2. 選 [Windows Shell] 會跳出命令列提示字元。
  3. 執行 [Diskpart]
  4. 輸入執行 [list disk]
  5. 找到新硬碟的磁碟代號 n,輸入執行 [select disk n]
  6. 非必要步驟,檢查磁碟詳細狀況,輸入執行 [detail disk]
  7. 一般新硬碟為 mbr 基本磁碟,不必特別輸入指定,可參考步驟 6 的詳細狀況。
  8. 建立主要磁區,由於只是為了在介面能顯示出來,所以不用管大小,直接建立,輸入執行 [create partition primary]
  9. 指定磁碟代號,輸入執行 [assign]
  10. 檢查磁碟詳細狀況是否完成設定,輸入執行 [detail disk]

若沒其他問題後,回到 Todo Backup Free 主畫面選 [Browse to Recover] 即可依照精靈介面選擇,開始還原到空硬碟。

http://www.todo-backup.com/products/home/screenshots.htm

講實在,不支援新的空硬碟滿瞎的,但看在 USB 3.0 支援分上,只好忍著啦~

Diskpart 官方網站參考用法:

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[WU] 升級 Windows 10 1703

台灣時間 2017/04/05 後 Win10 1703 已經開始發布,大部分的人還在苦苦等候 Win10 自動推送,若急著裝,可直接用 Win10 連結下面微軟網頁:

https://www.microsoft.com/zh-tw/software-download/windows10

若使用 Win10 連線,會自動出現 [立即更新] 這部分,若不是使用 Win10 連線,只會出現 [立即下載工具] 。

立即升級 Win10

立即升級 Win10

點選 [立即更新] 安裝,會在桌面上出現 [Windows 10 升級小幫手] ,並自動執行,若沒有自動執行或失敗,下次可點選 [Windows 10 升級小幫手] 。

Win10 升級小幫手

Win10 升級小幫手

若升級完成還執行 [Windows 10 升級小幫手] ,會跳出畫面顯示 已是最新的 Windows 。

最新 Windows

最新 Windows

這個軟體看起來應該是微軟企圖要做為未來升級工具用,升級完成後,不會自動移除,可自己到 [程式和功能] 去移除,省得在桌面占空間。

程式和功能

程式和功能

目前我升級幾台的經驗,[程式和功能] 若依照安裝日期排序,會發現很多軟體安裝日期被更改到 Win10 升級的那天,包含 [Windows 10 升級小幫手] ,由於安裝完 1703 ,Win10 會重新進入歡迎畫面,所以推測可能是 Win10 判斷軟體安裝資訊受損時,自動啟動重裝,部分檔案預設軟體可能因為自動重裝後,產生預設軟體改變,例如說圖檔可能會變回預設 Win10 開啟,或是 Zip 回復到 Win10 內建解壓縮,這個可能需要自己處理。

上面的網頁 [立即更新] 只支援 家用版 及 專業版 ,若是企業版,需要從大量授權網站下載 Win10 1703 企業版 ISO 安裝光碟直接點選 setup.exe 才能升級。

Win10 1703 比較像是新版本的安裝,所以多數安全性更新或 Windows Update 更新錯誤是不用管,安裝新版後會修復,但仍有相關問題不能安裝,Windows Update 不能正常執行時,可從下面網頁點選 Win10 疑難排解員進行故障排除:

https://support.microsoft.com/zh-tw/instantanswers/512a5183-ffab-40c5-8a68-021e32467565/windows-update-troubleshooter

若有特定 KB 不能安裝,可透過下面網頁搜尋下載離線安裝:

https://www.catalog.update.microsoft.com/Search.aspx

請輸入完整 KB 及數字,例如:

https://www.catalog.update.microsoft.com/Search.aspx?q=KB4015438

Categories: 工作點滴, 技術分享, 更新與回報 | 標籤: | 4 則迴響

[Office] Outlook 2013/2016 無法接收微軟信箱情形

微軟的 Hotmail / Outlook.com / msn.com / livemail.tw 等信箱,這幾個月在升級,從 Exchange ActiveSync 升級到 Microsoft Exchange
(我最早收到通知是英文版 2016/11/11,2016/12/22 以後收的是中文版,我抓中文版最新的畫面)

通知信

通知信

 

微軟的說明:
您可以在官方 Microsoft 支援網站存取重新連接帳戶的逐步指示:https://go.microsoft.com/fwlink/?linkid=837697

微軟的常見問題:
Windows 版 Outlook 近期問題的修正或因應措施

如果 Outlook 無法正常收信,可以手動改回使用 Exchange ActiveSync

新增帳號手動設定

新增帳號手動設定

 

選擇信箱類型

選擇信箱類型

伺服器資訊填入 eas.outlook.com

輸入伺服器

輸入伺服器

如果不是 Outlook 2013/2016 ,例如 Windows Live Mail,或是即使是 Outlook 2013/2016,但上面方法無法解決,可以透過 WebMail 登入,從選項啟用 POP3 / IMAP ,選擇其中一種方式設定收信,一般來說,建議使用 IMAP 。

支援 POP3

支援 POP3

剪貼 2017/03/12 的資訊如下:
POP
伺服器名稱: pop-mail.outlook.com
連接埠: 995
加密方法: TLS

IMAP
伺服器名稱: imap-mail.outlook.com
連接埠: 993
加密方法: TLS -> 注意:實測應為 SSL

SMTP
伺服器名稱: smtp-mail.outlook.com
連接埠: 587
加密方法: STARTTLS -> 注意:實測應為 TLS

以下為 Outlook 2013 實際設定畫面:

Outlook 2013 進階設定

Outlook 2013 進階設定


[2017/04/02 新增 Windows Live Mail 設定畫面]

如果使用 Windows Live Mail 連接 Hotmail 系列信箱,請參考下面兩個畫面的設定:

Mail Server 及認證方式

Mail Server 及認證方式

 

加密方式及 port

加密方式及 port

 

 

Categories: Office, 技術分享, 更新與回報 | 標籤: | 發表留言

[VSCode] 設定編輯下 Tab 鍵的空白字元數

VSCode 內建 Tab 為 4 個半形空白,與 Visual Studio 各版本一致。但我個人偏好 3 個空白。

官方文件說是設定 tabSize。

User and Workspace Settings https://code.visualstudio.com/Docs/customization/userandworkspace

設定方式如下圖。

設定 tabSize

設定 tabSize

但是以這種方式設定,在預設值下,第一個 Tab 是第 3 格,第二個 Tab 是第 4 格,第三個 Tab 是第 8 格,根本沒啥用。

事實上可以不管上面的官方文件,直接點選狀態列的 [空格]

選擇空格

選擇空格

選擇 [使用 Tab 進行縮排]

使用 Tab 進行縮排

使用 Tab 進行縮排

再選擇欲縮排的格數,我選擇 3 。

選擇欲縮排的格數

選擇欲縮排的格數

之後就是第一個 Tab 是第 3 格,第二個 Tab 是第 6 格,第三個 Tab 是第 9 格。

終於可以好好的一起玩耍了。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[RouterOS] 上傳流量爆頻寬

這個問題發生了一陣子了,就是使用 RouterOS 的路由器會由 RouterOS 爆上傳流量。

最早是發生在去年年底,是日本網路公司通知疑似遭受攻擊,已封鎖網路。

一般來說,都是以為電腦被攻擊,但是電腦檢查沒有問題,就不了了之。

慢慢的,一個個使用 RouterOS 路由器的案場接連出事, RouterOS 路由器在 2013/06 開始使用,起初沒想到是路由器問題,但是有部分環境是只有自動介面卡都會出事,而路由器換個 IP 就會正常,就鎖定是路由器問題。

由於去年年底才開始發生,所以誤認為 RouterOS 路由器漏洞,以:
RouterOS 漏洞
RouterOS bug

用 google 找半天,都找不到有用資訊,只好在公司架一台空機等著被轟。

今天終於等到狂轟猛炸,透過封包過濾是 DNS ,有了資訊就很好找,是「DNS遞迴查詢攻擊」,分別找到三個有用資訊:
為何你的ROS WAN口會有莫名的流量 https://ros.tw/wp/?p=2565
RouterOS 被大量流量攻擊 https://www.mobile01.com/topicdetail.php?f=110&t=4468348
DDoS Detection and Blocking http://wiki.mikrotik.com/wiki/DDoS_Detection_and_Blocking

最簡單的當然是從介面處理,所以依據第一個連結方式處理。

首先先看上傳爆流量,這個只有 RouterOS 路由器接 WAN ,後面沒任何設備。

上傳爆流量

上傳爆流量

大部分的環境是用 PPPoE 動態撥接,所以為避免路由器後面設備不能連線,先做 DHCP Server 的 DNS 設定。

選單 DHCP Server

選單 DHCP Server

台灣當然是 HiNet + Google 。

加入 DNS Server

加入 DNS Server

再由 左側選單 [IP] > [DNS] 把 [Allow Remote Requests] 勾勾拿掉。

移除勾選

移除勾選

一套用,馬上流量從 19.2Mbps 降到 390.7 kbps 。不過累積上傳量已經達到 645.4 GiB,想到我就是這垃圾流量的貢獻者,實在汗顏阿~

流量驟降

流量驟降

RouterOS 是個平價的工業級路由器,慣用 RB450G / RB750GR3 環境溫度都可以耐到 70 度,是耐操的好夥伴阿。

Categories: 工作點滴, 技術分享 | 標籤: | 1 則迴響

[WSE7] TeamViewer 下更新開始工具列釘選捷徑

TeamViewer (v11) 遠端桌面會基於 Win7 安全性原則下,限制一定的功能執行,例如下方開始工具列的釘選,可能在 TeamViewer 下被禁止移除釘選,或禁止新增釘選,但本機操作則無此限制,因此需要找個可以遠端作業的方案。

在公司的 Windows Standard Embedded 中,有放一隻程式透過 Windows Installer 安裝,為了方便,在初始化後,就把他釘選在開始工具列後,再做成影像檔。

但該軟體更新是透過直接覆蓋,當點選釘選的圖示執行時,就會觸發 Windows Installer 修復該程式,而安裝來源又是透過公司網路芳鄰安裝,導致來源不存在,因此每次都被 Windows Installer 修復功能拖很久。

我的解決步驟:

  1. 建立一個乾淨的捷徑,直接對執行檔滑鼠右鍵選建立捷徑,這樣就不會跟 Windows Installer 捷徑扯一起。
  2. 檔案總管開啟 %AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar ,注意,User Pinned 是隱藏目錄,直接貼路徑到檔案總管網址列即可。
  3. 將步驟 1 的捷徑替換掉步驟 2 內原先的捷徑。

這樣在開始工具列上釘選的捷徑,就不是原先透過 Windows Installer 建立的捷徑,就不會再觸發 Windows Installer 了。

從這經驗來看,要是要讓安裝程式直接在釘選上建立捷徑,應該就是把捷徑塞到步驟 2 那個目錄即可了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Win10] 建立新版快速工具列的目錄鍵接

話說,先前介紹過的

[快速工具列] Windows 的目錄鍵接

中,我還滿愛用的,我會把我常用的免安裝軟體及捷徑建立好放在 Server 上,當有同事需要時,直接拷貝到同事電腦就可以了。其中,特別重要的就是

目錄鍵接 (Junction)

我只要建立一個共用的捷徑清單,任何鍵接到這個清單的都能依照我最新的變更改變,或是鍵接到網芳上的路徑,自動依照目錄結構展開,在上一篇 Classic Shell 翻譯成「跳躍清單」。

但是到了 Win10 後,格式有改變,原先的格式不被支援,只會顯示

Target.lnk / Desktop.ini

兩個檔案,讓我十分不習慣,於是,萬事問 Google … 得到這篇:

http://winaero.com/blog/symbolic-link-in-windows-10/

基本上就是改用命令列產生:



MKLINK [[/D] | [/H] | [/J]] Link Target
/D 建立目錄符號連結。預設是檔案符號連結。
/H 建立永久連結而不是符號連結。
/J 建立目錄連接。
Link 指定新符號連結名稱。
Target 指定新連結參照的路徑 (相對或絕對)。


打開命令列,建立本機免安裝的 目錄鍵接 :

建立 目錄鍵接

建立 目錄鍵接

隨後打算,建立 網路芳鄰的 目錄鍵接 ,但是在 Win10 被擋住,只能建立 網芳 的目錄符號連結

建立 網芳 的目錄符號連結

建立 網芳 的目錄符號連結

目錄符號連結比較麻煩,產生出來的捷徑很難被拷貝,拷貝的話通常代表拷貝實際的目錄,因此最後得在快速工具列的目錄執行 MKLINK 。

來看看效果吧。本機免安裝軟體跟捷徑展開如下圖:

展開目錄鍵接

展開目錄鍵接

網路芳鄰上的檔案及目錄結構如下圖:

展開 目錄符號連結

展開 目錄符號連結

由於建立網路磁碟有可能會被勒索病毒整體加密,我個人是反對使用網路磁碟功能存取檔案伺服器,奈何同仁愛使用,且屢勸不聽,我是推廣使用目錄鍵接方式加速存取,目錄鍵接對於工讀生來說,也有效果,例如會計組的工讀生可能可以接觸到會計組伺服器上的部分檔案,但是不能接觸到上層目錄結構及巡覽,透過目錄鍵接,就可以解決沒有上層目錄存取權限,要進入子目錄的窘況。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[VSCode] 輕巧的程式碼編輯器

我一直在找一個類似 VBA 環境的 javascript 開發環境,最好是輕巧一點,大部分的環境都搞得很複雜,我只想簡單測試一個 function ,結果得搞到變成一個方案,並透過編譯或轉譯再由其他環境執行。

我自己有在公司的軟體中掛入 VBScript 支援功能,也就是直接呼叫 Script Control ,當然同一個引擎也可以跑 javascript ,理論上,自己寫個 WinForm 包 Script Control 就結束的,但是在編輯環境上會花很多時間,所以最好能找現成的。簡易型的我做成網頁跑:
http://tlcheng.twbbs.org/TLCheng/Basic/vbs/IDE/Runner.htm
支援 vbscript/javascript ,要用 IE 相容模式跑。

最近逛到 Code Runner 可以直接跑~
Code Runner: https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner

看了一下,是 Visual Studio Code(VSCode) 外掛套件~
Visual Studio Code: https://code.visualstudio.com/

說實在的,已經有 Visual Studio 2015 Ent. 下,覺得不需要再裝 VSCode ,VSCode 支援 Windows/iOS/Linux ,本來以為是跨 OS 才會想要玩的,但是實在很想測 Code Runner ,又看到 VSCode 有免安裝版,50MB 下載解壓縮就能執行,心動之下就抓下來玩了:
https://code.visualstudio.com/docs/?dv=winzip

執行以後,安裝了兩個擴充套件,Code Runner 及 mssql 。

第一次開啟

第一次開啟

Code Runner 說經過設定,可以讓你在 VSCode 下直接跑以下語言:
C, C++, Java, JavaScript, PHP, Python, Perl, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, C# Script, VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, 及自訂命令

貼一段過去寫好的 javascript,依據 Code Runner 網頁的範例跑,可以直接測試 javascript:

執行 javascript

執行 javascript

再貼一段過去寫好的 vbscript,測試一下,也可以正常跑:

執行 vbscript

執行 vbscript

javascript 看起來應該是 VSCode 本身就支援,vbscript 則自動呼叫 cscript 編譯執行,結果畫面:

回傳 vbscript 執行結果

回傳 vbscript 執行結果

VSCode 的特色就是超快,自從 VS2013 起,外掛套件一多,開啟速度就慢到不行,安裝 VS2015 時,只裝不到 10 個套件,也是慢到不行,開機後第一次執行大概要 3 分鐘才能進到 VS2015 ,所以忽然發現,VSCode 可以當作平常簡易開發 html / javascript / asp.net 原始碼的環境,因為免安裝,還可以丟到 Embedded OS 內跑。玩玩 Code Runner 忽然發現,還可以連 SQL Server ,想到 SSMS 也越來越慢,簡直是測試 T-SQL 利器。 (需安裝 mssql)

在 VSCode 開啟 .sql 的檔案,會自動載入 mssql 套件環境:

自動載入 mssql 套件環境

自動載入 mssql 套件環境

滑鼠右鍵選執行查詢:

執行查詢

執行查詢

第一次使用須建立連線:

建立連線

建立連線

輸入 server 資訊:

server

server

輸入資料庫:

資料庫

資料庫

選擇驗證方式並輸入驗證資訊:

驗證方式

驗證方式

完成建立連線:

完成建立連線

完成建立連線

第二次使用 (指重開 VSCode) 直接選擇已建立的連線:

選擇已建立的連線

選擇已建立的連線

直接就可以顯示 查詢結果。

查詢結果

查詢結果

VSCode 免安裝真的很方便,速度又快,只是要看原始碼的話,或是簡單開發,完全可以參考使用阿~~~

Categories: 電腦和網際網路, 工作點滴, 技術分享 | 標籤: | 發表留言

[VBA] Office 2013 x64 以後版本呼叫 Windows API 要加關鍵字 PtrSafe

工作上有一個很少用的工具 Excel 巨集,裡面放了一堆 API ,是以前寫的。

這兩天臨時要用到,用 Excel 開起來後,一片滿江紅,下面的圖檔是我處理完後加個測試行做出來的,檔案就跟第一行一樣,宣告區全是紅的。

Office 2013 VBA 版本

Office 2013 VBA 版本

從版權畫面可以看到,VBA 7.1 的大版本懸掛在那。

滿江紅是看不出來要改啥,所以上網查半天,詳細說明請參考 MSDN 線上手冊:

Delare 陳述式 https://msdn.microsoft.com/zh-tw/library/office/gg278581.aspx

搞定後才發現,重新輸入程式碼,換行時,VBA 程式碼自動檢查就會提醒你,在 Office x64 下,要加 PtrSafe :

自動提醒要加 PtrSafe

自動提醒要加 PtrSafe

可以比對 [錯誤] / [視窗] 兩行宣告,就只差在 PtrSafe ,錯誤那行沒有輸入 PtrSafe 就會跳錯。

所以也可以推知,舊版本的 VBA 在 x64 下,若有呼叫到 Windows API 都須修改宣告,否則根本不能跑,可能非微軟的協力廠商,例如 AutoCAD 也受此影響。

當然又回到那句老話,這樣看來,微軟十年前根本是騙大家的,VB6 要上到 x64 還是有很多解法,就看微軟願不願意而已,因為在 Office 中已經解決了阿~

微軟不再支援 VB6 的理由,又消滅了一個…

Categories: Office, 技術分享 | 標籤: | 發表留言

[Android] AirDroid 在 Android 6.0 看不到 外部SD卡 – Zenfone 3 ZE520KL

AirDroid 是一套 Android 上很有名的軟體,主要功能是把手機當成一個 Web ,透過 IE11/Chrome 連入後,上下傳檔案或是操作手機,我常常拿來編輯聯絡人、發簡訊 (我喜歡用鍵盤打)、抓照片及錄影。

在 Android 4.4 以後,開始對 Apps 限縮存取 外部 MicroSD 卡的權限,當然山不轉路轉,軟體自有解套,所以 Zenfone 3 一到手我仍然裝上這隻程式,並正確的存取外部SD卡。

Zenfone 3 剛到手的時候,手邊沒有準備 MicroSD 卡,把三年前買給電視盒的 32 GB Class 6 卡先插進去,後來看到一些文章提到,ZenFone 3 支援 4K 錄影,但需要高速卡,就另外買了一張讀取速度到 85 MB UHS-I 64 GB 記憶卡。

本來 32 GB 記憶卡用 AirDroid 滿正常的,但 64 GB 記憶卡在網頁上看到的 外部SD卡 是空白的,沒目錄、檔案,想說原先好像有設定到 MicroSD 卡的磁碟代碼,所以應該是 AirDroid 的設定問題,測了半天,終於搞定。請依以下步驟:

1. 從手機的設定叫出應用程式來。

選取 [應用程式]

選取 [應用程式]

選取 [AirDroid]

選取 [AirDroid]

2. 刪除 AirDroid 所有使用的記憶體,這會把 AirDroid 設定都刪除,沒錯,就是要刪除重設。

選取 [儲存空間]

選取 [儲存空間]

選取 [清除資料]

選取 [清除資料]

3. 開啟 AirDroid 就如同第一次使用,開到可以讓網頁連入。

第一次啟動 AirDroid

第一次啟動 AirDroid

4. 用網頁連入,這邊使用 Chrome ,點選到 外部SD卡 ,這時候會跳出一個對話框,提醒你要設定。

外部 SD 卡需要授權

外部 SD 卡需要授權

5. 點選 [檔案] [外部SD卡] [完成],注意上方選擇的是 MicroSD ,點選右下角的 [選取] 。

選取 [檔案]

選取 [檔案]

選取 [外部SD卡]

選取 [外部SD卡]

 

選取 [完成]

選取 [完成]

選取 [Micro SD]

選取 [Micro SD]

選取 [選取] 後的畫面

選取 [選取] 後的畫面

6. 可以發現 Chrome 可以正常存取 外部SD卡了。

正常存取 [外部SD卡]

正常存取 [外部SD卡]

其他:
若不想看到網頁跳出提醒畫面,可直接步驟 3 完作步驟 5 ,再用網頁瀏覽器連接,就可以直接到步驟 6 。
若步驟 6 看到的是空白沒任何檔案,請確定步驟 5 最後選取前是否沒任何檔案,若兩邊一致就沒問題,若有問題的話,回到步驟 1 重作。
另外如果只是隱藏的檔案或是 . 開頭的檔案或目錄名出不來,我還找不到解決方法,好像就是出不來。

Categories: 行動裝置, 技術分享 | 標籤: | 1 則迴響

[oledb] SQL Server Compact 沒有出現在 OLEDB 提供者清單中

話說,我有個現場設備拆回來維修,我打算把資料庫備份出來後,遷移到現場替代機上。

大部分情況,我會使用 Access ,但是這個現場資料庫用 SQL Server Express 2014 ,超過 255 欄,所以需要尋找替代方案。
首先我想起 SQL Server Compact Edition (SQL CE) ,因為幾年前在用 SQL Server Express 2008 R2 時,內建支援 Compact ,而且在 Visual Studio 2010 也可以用,也可以內建支援。

一測試才發現,大糗。

SQL Server 2012 / Visual Studio 2012 以後版本預設都沒支援。 Visual Studio 2010 使用 SQL CE 的說明文件:
https://msdn.microsoft.com/zh-tw/library/gg606540.aspx

而且最慘的是 SQL CE 沒出現在 oledb providers (提供者) 清單中,根本不知道怎樣玩下去。

這是 「SQL Server 2014 匯入和匯出資料 (64 位元)」 找不到 SQL CE 的畫面:

SQL Server 2014 匯入和匯出資料 (64 位元)

SQL Server 2014 匯入和匯出資料 (64 位元)

 

這是 Visual Studio 2015 IDE 找不到 SQL CE 的畫面:

Visual Studio 2015 IDE

Visual Studio 2015 IDE

這是開新的 udl 找不到 SQL CE 的畫面:

開新的 udl

開新的 udl

當然,這邊先說一下,為啥用 oledb 的原因,就是使用 oledb 不綁 .Net framework 版本。SQL CE 有 2005/3.0/3.5/4.0 不同版本,各版本還有出 Service Pack ,但是使用不同版本相對的 .Net framework 也要對應相對版本,2005 就對應到 .Net framework 2.0 ,所以還是採用 oledb 彈性較大。
引用 MSDN 相關說明:「除非您使用 OLEDB 資料提供者,否則需要 Microsoft.NET Framework 4 或更新版本才能安裝 SQL Server Compact 4.0。」
https://technet.microsoft.com/zh-tw/library/bb190958%28v=sql.110%29.aspx

首先,先用 .Net framework 內建的 OleDbEnumerator 列舉 oledb 的提供者,沒找到 SQL CE:
https://msdn.microsoft.com/zh-tw/library/system.data.oledb.oledbenumerator.aspx

OleDbEnumerator 列舉下拉式選單

OleDbEnumerator 列舉下拉式選單

註:圖中下拉式選單是用 OleDbEnumerator 傳回的 SOURCES_NAME – SOURCES_DESCRIPTION 格式顯示

由於找不到 SQL CE ,我在這個網站下載了 x86/x64 的工具來查看看:
http://www.sqledit.com/odbc/oledb-provlist.html

x86 的畫面

x86 的畫面

x86 的畫面

x64 的畫面

x64 的畫面

x64 的畫面

在 google 上翻找了兩天,最後是我以前在 2010 曾經存了一個 oledb.reg 在 SQL CE 3.5 SP2 目錄下,裡面有 OLE DB Provider ,從這關鍵字再回頭 google 。

先找到 Connect 上有人回報的問題,微軟簡單說明說,因為 SQL CE 在 oledb 支援不完整,所以後來沒列在 oledb 提供者清單上:
https://connect.microsoft.com/SQLServer/feedback/details/546133/sql-server-compact-edition-3-5-oledb-driver-not-listed

在找到相關討論,列出比較重要的兩篇:
http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.database.ado/2008-02/msg00080.html
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/cc6db680-1d33-4c9b-8b67-9334b3383904

在開發機測試一下,分別做了兩個註冊資訊檔案匯入:
oledbSqlCe35.reg for SQL CE 3.5 SP2


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{F49C559D-E9E5-467C-8C18-3326AAE4EBCC}\OLE DB Provider]
@="Microsoft SQL Server Compact OLE DB Provider 3.5"

oledbSqlCe40.reg for SQL CE 4.0 SP1


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}]
@="Microsoft.SQLSERVER.CE.OLEDB.4.0"

[HKEY_CLASSES_ROOT\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}\OLE DB Provider]
@="Microsoft SQL Server Compact OLE DB Provider 4.0"

為避免兩個版本混淆,建議 OLE DB Provider 下面字串明確列出版本,例如上面的 3.5 或是 4.0 。
另外 SQL CE 4.0 在原始預設註冊資訊為:

[HKEY_CLASSES_ROOT\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}]
@="Microsoft SQL Server Compact OLE DB Provider for Windows"

這邊建議依照我提供的修改,因為大部分軟體都會從這抓 oledb 的名稱,若是這邊不改,很多軟體連線字串不會組成 Microsoft.SQLSERVER.CE.OLEDB.4.0 ,就變成不能用。

在 x64 的電腦上,除了上面註冊資訊檔修改外,另外需要針對 x86 再修改,否則 x86 程式在 x64 作業系統上仍然會撈不到 oledb 提供者。

SQL CE 3.5


Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{F49C559D-E9E5-467C-8C18-3326AAE4EBCC}\OLE DB Provider]
@="Microsoft SQL Server Compact OLE DB Provider 3.5"

SQL CE 4.0


Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}]
@="Microsoft.SQLSERVER.CE.OLEDB.4.0"

[HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{2006C53A-C915-41EA-BAA9-9EAB3A1FBF97}\OLE DB Provider]
@="Microsoft SQL Server Compact OLE DB Provider 4.0"

匯入完成後,就可以正確找到 oledb 並進行操作了:
這是 「SQL Server 2014 匯入和匯出資料 (32 位元)」 找到 SQL CE 的畫面:

SQL Server 2014 匯入和匯出資料 (32 位元)

SQL Server 2014 匯入和匯出資料 (32 位元)

這是 「SQL Server 2014 匯入和匯出資料 (64 位元)」 找到 SQL CE 的畫面:

SQL Server 2014 匯入和匯出資料 (64 位元)

SQL Server 2014 匯入和匯出資料 (64 位元)

這是 Visual Studio 2015 IDE 找到 SQL CE 並開啟載入的畫面:

Visual Studio 2015 IDE

Visual Studio 2015 IDE

這是開新的 udl 找到 SQL CE 的畫面:

開新的 udl

開新的 udl

最後回頭用下載的工具來測,也可以正常找到 SQL CE 了:
x86 的畫面

x86 的畫面

x86 的畫面

x64 的畫面

x64 的畫面

x64 的畫面

註:我在有安裝 SQL Server 2014 / Visual Studio 2015 @Win81 x64/Win2012r2 x64 下,已有 SQL CE 4.0 ,不確定是安裝 MSSQL / VS 自己加進來還是 Win81/2012r2 內建,因為在控制台新增移除程式清單上沒看到。

[2016/10/03 補充]

VS2015 的 SSDT 更新,把 「SQL Server 2016 匯入和匯出資料 (32 位元)」也掛進來了,測了一下也可以正常抓到 SQLCE35/SQLCE40 的 oledb 清單,不過繁中做一半,上半部介面繁中,下半部按鈕全部英文~

SQL Server 2016 匯入和匯出資料 (32 位元)

mssql_2016_importexport_32_new

SQL Server 2016 匯入和匯出資料 (32 位元)

 

 

Categories: 自用整理, 工作點滴, 技術分享 | 2 則迴響

[Windows] 網路芳鄰版本

網路芳鄰若發生無法登入時,可能是 Windows 驗證網芳版本問題,可以搜尋 NTLM / NTLMv2 / NTLMv3 的相關設定。這邊整理網路芳鄰版本自我參考:

Windows 版本 SMB 版本
2000 (2000/2) 1.0
XP (2001/10) 1.0
2003 (2003/4) 1.0
Vista (2006/11) 2.0
2008 (2008/2) 2.0
7 (2009/7) 2.1
2008 R2 (2009/7) 2.1
8 (2012/8) 3.0 (2003/9)
2012 (2012/8) 3.0 (2003/9)
8.1 (2013/10) 3.0 (2003/9)
2012 R2 (2013/10) 3.0 (2003/9)
10 (2014/9) 3.0 (2003/9)

微軟在網路芳鄰版本描述文件不是很好找,多數只有教怎樣通過不同版本認證。

Vista / 2008 / 7 / 2008 R2 可以在這篇找到版本分別為 2.0 及 2.1:

What’s New in SMB https://technet.microsoft.com/en-us/library/ff625695.aspx

這篇可找到 Win8 Beta 原先是 2.2 版更新到 3.0 版:

支援的 SMB 協定由版本 2.2 升級為 3.0 https://blogs.technet.microsoft.com/technet_taiwan/2012/08/03/smb-2-2-3-0/

這篇有提到 Win2012 R2 為 3.0:

Windows Server SMB 的新功能 https://msdn.microsoft.com/zh-tw/library/hh831474.aspx

從技術支援這篇的篇名,可判斷 Vista 以後的大版本:

如何啟用與停用 SMBv1、 SMBv2 和在 Windows Vista、 Windows Server 2008,Windows 7,Windows Server 2008 R2、 Windows 8 和 Windows Server 2012 SMBv3 https://support.microsoft.com/zh-tw/kb/2696547

至於 SMB 各版本發布時間可參考維基百科的說明:

Samba (software) https://en.wikipedia.org/wiki/Samba_(software)

規範官方網站:

Samba – opening windows to a wider world https://www.samba.org/

微軟網路芳鄰通訊協定:

Microsoft SMB Protocol and CIFS Protocol Overview https://msdn.microsoft.com/en-us/library/windows/desktop/aa365233.aspx

 

Categories: 電腦和網際網路, 工作點滴, 技術分享 | 標籤: | 發表留言

[IIS] Windows Embedded 7 Standard IIS 7.5 連線數

話說,昨天剛好看到一篇文章:
A.R.C. Increase IIS Connection Limits

裡面有說 IIS 7.5 for Win7 可以像 WinXP 將連線數增加到 40 。

跟一般所知 Win7 的 IIS 連線數限制不太一樣:
IIS limits imposed by Operating System version

本著好奇的心態,請同事拿 Windows Embedded 7 Standard(W7E) 測測看,測試工具就用 VS2015 的壓力測試,持續一分鐘,常數連線數。

IIS 限制數量 最大成功連線數 最小失敗連線數
1 1 2
3 2 5
10 10 15
40 40 50
預設值 1000 2000

註:最大成功連線數、最小失敗連線數不代表限制值,只是表示在 VS2015 中,用了不同連線數情境來測試,並沒有詳細逼近去測出最接近值。

很驚訝,預設值居然用 1000 個連線去可以跑,這是表示 W7E 本身就直接可以跑 1000 client 了嗎?

不過很悲慘的是,一分鐘到了,VS2015 關閉,W7E 那邊卻還沒跑完,如果在跑完之前立刻再跑下一次 1000 次測試,馬上就跳 http 503 錯誤…

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[Office] Office 365 取消自動續訂

因為 OneDrive 空間縮小的事件,有部分人使用網路硬碟超過一定容量或是有申請過保留容量的,可能都會收到 OneDrive 送的 Office 365 個人版一年份,含 1 TB 空間。

OneDrive 贈禮

OneDrive 贈禮

當接受了這個贈品後,會看到,此 Office 365 會在隔年自動續訂。

自動續訂

自動續訂

多數人並不想自動續訂,只想好好享用免費的產品,所以,可以在 Microsoft Office FAQ 中找到說明:http://www.microsoftstore.com/store/mstw/tw_TW/DisplayHelpOfficeFAQPage?icid=All_Office_subnav_FAQ#section6
問:我該如何取消我的 Office 365 自動續訂?
答:
•如果透過 MicrosoftStore.com 購買自動續約訂用方案,您有兩個選項可進行取消:•您可以造訪 http://www.office.com/myaccount 並關閉付款和帳單區的自動續訂選項,以進行線上取消。 使用這個方法,您的訂用方案將在您的剩餘訂用時間到了之後自動到期。
•若要立刻取消,請聯絡 Microsoft 支援中心並要求立刻取消。
•如果您向其他零售商購買自動續約訂用方案,您可能必須取消向該零售商的訂用。 您可以造訪www.office.com/myaccount,並查看付款和帳單區以確認此項操作。. 如果看到「向 [零售商名稱] 購買」,您將需要取消向該零售商的訂用。

也有人一看到取消自動續訂就按下去,但看到網頁的提示,像是要立刻砍帳號,又猶豫不決:

看起來是立刻砍帳號

看起來是立刻砍帳號

那就讓我們繼續取消自動續訂看看吧。

確認取消

確認取消

取消後會提示返回訂閱。

完成取消

完成取消

完成取消後會提醒免費取得一個月的自動續約。

取消後的狀態

取消後的狀態

這樣就可以放心會不會自動刷卡了,到時候還要用就再人工續約吧~

 

 

Categories: Office, 技術分享 | 標籤: | 3 則迴響

[遠端] TeamViewer 7 不記憶 ID 的示範影片

話說前篇:[遠端] TeamViewer 7 的特性

有提到,「只有無線網卡 (其他網卡停用呈灰色狀態下) ,當 TeamViewer.ini 的 nosave=1 時,每次開啟 TeamViewer 都會取得新的 ID ,完全不會記憶」,其實這段就等於永遠不會 5 分鐘,而且是原廠預留的漏洞,完全沒有版權爭議。

不過由於文字說明令人無法意會,親朋好友也沒看懂,我錄了我電腦開啟 TeamViewer 4 次,請特別注意,每次 ID 都不一樣,既然每次 ID 都不一樣,自然就不會鎖 5 分鐘了,因為下次開的 TeamViewer 還是會取得 新 ID 。

此狀況適用於連線端 (Client) ,跟偶爾給別人連線用的被連線端 (Server),如果是經常被連線端的每次 ID 都不一樣就瘋掉了。

最後,在 Win2012 R2 x64 上啟動 TeamViewer 的快速工具列可參考前篇:[快速工具列] Windows 的目錄鍵接

Categories: 工作點滴, 技術分享 | 標籤: | 2 則迴響

[H5] 筆記:SVG 拉伸圖片

這篇沒啥好看的,我自己做個筆記而已。

搜尋到的資料發現,想要在 SVG 內拉伸圖片要靠濾鏡,也就是使用 feImage ,改了一堆 HTML5 語法後,忽然在 MSDN 文件上看到一個該屬性也可以給 image 用…

結果用下面這段就可以了:

<image x="3" y="3" width="320" height="200" xlink:href="圖片" preserveAspectRatio="none" />

也就是說,加上 preserveAspectRatio 屬性即可,白改半天了…

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[H5] 讓 Internet Explorer / WebBowser Control 支援 SVG 內的走馬燈

IE 支援 HTML5 不完整是已知的事實,對 IE 的抱怨就不多說了,直接談問題吧。

因為考慮到行動裝置縮放問題及智慧電視展示,在開發長時間展示畫面因為不確定將會在 Full HD 的電視顯示、電腦或是行動裝置,因此透過 HTML5 + SVG 算是比較通用的方案,IE / WebBowser Control 也能有不錯的支援。

由於有縮放問題,所以傳統 HTML4 的 marquee 就不太適合。

配合 SVG 的語法,嵌入走馬燈可以選用 animate:

<svg x='3' y='712' width='1366' height='36'>
   <animate TARGETELEMENT='ID名稱' xlink:href='#ID名稱' attributeName="x" from="1366" to="-2000" dur="30s" repeatCount="indefinite" />
   <text x='0%' y='70%' fill='white' id='ID名稱'>走馬燈或跑馬燈的文字</text>
</svg>

但是很冏,Internet Explorer / WebBowser Control 不支援,從微軟網站可以找到程式碼透過 Script 跑,所以算是客製化,針對每個 ID 都要自己寫。

為了節省時間,可以到這個網站下載已開發好的套件,官方首頁為:https://leunen.me/fakesmile/

從 Source Code 下載 smil.user.js ,再於 head 區引入即可。

<head>
   <script type="text/javascript" src="smil.user.js"></script>
</head>

不會妨礙 Chrome 或行動裝置相容。

當然比較起來,Chrome 跑起來比較順,IE 跑起來就比較閃爍了。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[H5] 讓 WebBrowser Control 直接相容 HTML5 網頁

讓 WebBrowser Control 直接相容 HTML5 網頁

利用 Google 搜尋 WebBrowser Control HTML5

https://www.google.com.tw/#q=WebBrowser+Control+HTML5

可以找出很多文章,關於強制讓 WebBrowser Control 以 HTML5 模擬環境執行的案例,例如這篇:

[C#]設定WebBrowser Control運行的User Agent版本

但是從網站開發者的角度來看,其實只要正確在 HTML 內標記後,就可以讓 WebBowser Control 支援 HTML5。

所以這篇是從 Server 端的角度來看,如果你是 Client 開發者,Server 端不是你能控制的,可以不要看這篇,看看上面引用的連結。

這個做法很簡單,就是在 head 區內加入 Meta 標籤,強制指定 IE 版本。

WebBrowser Control 核心就是 Internet Explorer 桌面版本的引擎,因此對於 IE 有效的標籤,對於 WebBrowser Control 也有效。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
...
</head>
...
</html>

若是網頁開發者,不妨直接從 Server 端解決這個問題,避免 Client 端要改寫程式碼,用此方法對 IE / WebBrowser 都有效,也不會影響 Chrome 或是行動裝置,是你好、我好、大家好的解決方案。

當然, IE8 以前本身就不支援 HTML5 就不用試了。

微軟的 Internet Explorer Developer 關於相容說明:https://msdn.microsoft.com/zh-tw/library/jj676915.aspx

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[CSS] 修改共用樣式快速替換字型大小

其實這是一個自作孽的故事。

我以前都用 vbscript 寫網頁,一方面以前是 IE 的天下,一方面我立志成為 BASIC 的推廣者,所以對於 vbscript 的強迫中獎,不遺餘力。

我先前有網頁會偵測視窗大小,自動調整字型大小,但是受迫於大環境下,不得不 javascript 化。

對於一個已經製作完成的網頁,樣式通常都設定在裡面,所以改既存樣式是比較省事的方法,也能取得樣式變化的一致性。

在變更樣式的過程中,我寫了個函數,引數是 樣式ID,跟 Class 名:
GetStyleObject(cssIdName, styleName)

例如:
<link type="text/css" rel=’Stylesheet’ href="CssFile.css" id="cssIdName" />
<span class="styleName">樣式名</span>
而在 vbscript 的部分使用下面程式碼可正常縮放字型:
GetStyleObject(“cssStationText", “.DataTime").fontsize = 32 * scaleZoom & “pt"

在 javascript 的部分使用下面程式碼,則字型不會縮放:
GetStyleObject(“cssStationText", “.DataTime").fontsize = 32 * scaleZoom + “pt";

最後追蹤發現問題的原因是 vbscript 大小寫意義相同,而 javascript 大小寫意義不同,所以 fontSize 的 S 要大寫,沒有注意到…

所以這是一個自作孽的故事。

好,下面就用最簡單的範例來分別貼出 vbscript / javascript 的程式碼吧。


vbscript
   Function GetStyleObject(Byval cssIdName, Byval styleName)
      With document.styleSheets
         For i = 0 To .length - 1
            If .item(i).id = cssIdName Then
               Set objstyleSheet = .item(i)
               Exit For
            End If
         Next
      End With

      With objstyleSheet.rules
         For i = 0 To .length - 1
            If .item(i).selectorText = styleName Then
               Set GetStyleObject = .item(i).style
               Exit For
            End If
         Next
      End With
   End Function

   Sub window_onresize()
      scaleZoom = document.body.clientWidth / 1366
      GetStyleObject("cssStationText", ".DataTime").fontsize = 32 * scaleZoom & "pt"
   End sub
 

javascript
   function GetStyleObject(cssIdName, styleName) {
      var objStyle;
      var allStyles = document.styleSheets;
      for (i=0; i<allStyles.length; i++){
         if(allStyles[i].id == cssIdName) {
            objStyle = allStyles[i];
            break;
         }
      }

      for (i=0; i<objStyle.rules.length; i++){
         if (objStyle.rules[i].selectorText == styleName) {
            return (objStyle.rules[i].style);
         }
      }
   }

   function window_onresize(){
      var scaleZoom = document.body.clientWidth / 1366;
      GetStyleObject("cssStationText", ".DataTime").fontSize = 32 * scaleZoom + "pt";
   }
Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

[VBA] 回傳到 Sheet 的陣列索引值下限會自動從 0 變更為 1

這篇跟前篇有點關係:[VBA] LongLong 超長整數 我打算將監測數據依據是否超越門閥值來轉換成旗標變數。 由於 Excel 內沒有 Array 這個函數,所以我在 VBA 裡面加了一個 VbaArray 函數來呼叫 Array 給 Excel 呼叫。

Function VbaArray(ParamArray arrayData())
  ReDim rtnArray(0 To UBound(arrayData))
  For ibd = 0 To UBound(arrayData)
     rtnArray(ibd) = arrayData(ibd).Value
  Next
  VbaArray = rtnArray
End Function

也就是直接包裝 Array 而已,沒啥特別的。 透過這個函數,我在 Sheet 內呼叫我的旗標轉換函數,由於 VB6 以後,未明確宣告陣列索引下標者,均為 0 ,VBScript / VBNET 則強制為 0 ,沒有陣列索引下標可以不為 0 ,因此習慣這個體驗,直接用:

For i = 0 To UBound(arrData)
   ' 略
Next

然後 Excel 回傳 #VALUE … 用除錯模式追蹤,居然問題出現在 arrData(0) 陣列索引錯誤?立刻在立即除錯測試 LBound(arrData)、UBound(arrData) 與我的認知完全不同,所有索引值都增加了 1 ,也就是說從 Base 0 變成 Base 1 。 寫了小的測試 Excel 2013 (VBA 7.1) 的檔案如下圖:

Excel 2013 經過 Sheet 陣列索引值變更了

Excel 2013 經過 Sheet 陣列索引值變更了

GetSecond 變成取第一個。 我以為是 Excel 2013 的 bug ,找台 Excel 2003  (VBA 6.5) 測試,也是相同狀況:

Excel 2003 經過 Sheet 陣列索引值變更了

Excel 2003 經過 Sheet 陣列索引值變更了

所以此行為是設計行為,透過 Google 搜尋微軟站台相關說明。 Support 那邊有相關的,但並沒有很明確提醒這個狀況:https://support.microsoft.com/zh-tw/kb/213798

論壇則有人因為跟 VBNET 慣例不同,提出疑問:https://social.msdn.microsoft.com/Forums/en-US/8155cfa8-7b9f-4a55-ba46-45bddcb77779/array-dimensions-mismatch-between-excel-and-net-vb-2010?forum=vbinterop

我猜可能是為了相容 Excel 5.0 預設採用 Base 1 吧?不然也沒得猜了。 做個紀錄,以後不會再犯相同狀況。

Categories: 工作點滴, 技術分享 | 標籤: | 發表留言

在 WordPress.com 建立免費網站或網誌.

%d 位部落客按了讚: