# 介紹好用工具：BrowserSelector (依據網域名稱選用特定瀏覽器開啟)

現在每個人都會擁有多個網路身份，不斷的登入、登出非常的浪費時間。像是微軟的網站，就有區分「微軟帳戶」與「組織帳戶」，平常用個人的，使用 Office 365 就要切換身份，每次在「個人」與「公司」帳戶之間切換，實在太煩了。今天我要介紹這套軟體，我已經使用了好幾年了，是一個讓我愛不釋手的小工具，他可以依據你想要開啟的網址不同，自動選擇不同的瀏覽器設定檔來開啟網頁！

### 簡介 Google Chrome 設定檔功能

在你裝好 Google Chrome 瀏覽器之後，第一次啟動時，預設就會有個**設定檔**(Profile)被建立，其名稱就叫做 `Default`，實體路徑在 `%LOCALAPPDATA%\Google\Chrome\User Data\Default` 目錄下。

事實上，你可以自行定義多個不同的設定檔(Profile)，用來區分各種不同的網路身份。建立方式請參考下圖：

![在 Google Chrome 建立設定檔](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/5333a254a1c812c13224-86330460-4c476200-bc7a-11ea-879e-d9b6497de6b4.png)

你可以這樣想像，每一個 Google Chrome 設定檔代表著一個完全獨立的「瀏覽器」，因為不同設定檔之間完全不會共用任何資料，像是 Cookies、Local Storage、Service Workers、IndexedDB、Cache、... 都是完全獨立分開的。因此，你在第一個設定檔所登入的身份，在第二個設定檔是看不到的，所儲存的資料也在完全不同的實體資料夾，可以有效的做到實體隔離！

當你在建立新的設定檔的時候，目錄名稱是無法調整的，而預設「第二個」設定檔名稱就叫做 `Profile 1`，「第三個」設定檔名稱就叫做 `Profile 2`，依此類推！

例如我的電腦有七個設定檔，其資料夾就會長這樣：

-   `%LOCALAPPDATA%\Google\Chrome\User Data\Default`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 1`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 2`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 3`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 4`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 5`
-   `%LOCALAPPDATA%\Google\Chrome\User Data\Profile 6`

當你有了多個設定檔之後，我們可以利用「捷徑」或「批次檔」來啟動瀏覽器，並且指定我們希望載入的「設定檔」目錄。例如你要啟動「預設設定檔」的話，其命令如下：

```bash
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Default"
```

像我 Office 365 專用的設定檔，就是放在 `Profile 1` 設定檔下，那麼我的啟動命令與參數就會是這樣：

```bash
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 1"
```

### 簡介 Browser Selector 工具

我在日常工作上，遇到最困擾的一件事，就是當同事寄信給我，信件中有 SharePoint, Microsoft Forms 或 OneDrive 檔案連結時，點擊進去第一件事就是叫我重新登入，因為我瀏覽器的「預設設定檔」是登入我的「微軟帳戶」。我必須切換到 Office 365 的「組織帳戶」才有權限開啟連結。

我們一般在 Windows 任何應用程式點擊任何**超連結**時，都會開啟一個「預設瀏覽器」，但是「預設瀏覽器」只能有一個，我們很難依據「網址」來決定要開哪一個瀏覽器，這套 [Browser Selector](https://github.com/DanTup/BrowserSelector) 就是用來解決這個難題。

[Browser Selector](https://github.com/DanTup/BrowserSelector) 完全由 .NET Framework 4.5 開發而成，雖然是開放原始碼，但是作者已經不再維護此工具，我之前幫他修正了一些[錯誤](https://github.com/DanTup/BrowserSelector/issues/16)，雖然已經被[合併](https://github.com/DanTup/BrowserSelector/pull/17)回去，但作者不會再發佈新版本。因此我決定自行 Fork 一份到我的 GitHub 帳號下，接手維護這份專案，大家如果要下載最新版的話，可以到以下網址下載：

-   https://github.com/doggy8088/BrowserSelector/releases

這套工具使用上很簡單，基本上只有 4 個步驟而已：

1.  下載 [Browser Selector](https://github.com/doggy8088/BrowserSelector/releases) 並複製到任意資料夾
    
    我個人是安裝到 `C:\Program Files\BrowserSelector` 資料夾，但這個目錄的存取權限比較高，需要用系統管理員身份才能建立與修改檔案。
    
    > 你要安裝到任意資料夾都可以，只要成功安裝與註冊之後不要隨便移動檔案路徑即可。
    
2.  編輯 `BrowserSelector.ini` 設定檔
    
    這個 INI 設定檔有兩個區段：
    
    -   `[browsers]` 用來定義瀏覽器的啟動路徑，Key 就是瀏覽器別名，而 Value 就是啟動路徑與參數，應該很好理解。
    -   `[urls]` 則是用來定義哪些網站要用哪個瀏覽器開啟，我特別指定所有 Office 365 網址都用 `chrome_o365` 來開啟。
    
    你可以從以下範例看出，其實你要設定多少種瀏覽器都可以，無論是 IE, Firefox, Microsoft Edge 都可以。
    
    ```ini
    [browsers]
    chrome = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Default"
    chrome_o365 = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 1"
    
    ff = C:\Program Files (x86)\Mozilla Firefox\firefox.exe
    edge = microsoft-edge:{url}
    ie = iexplore.exe
    
    [urls]
    admin.microsoft.com       = chrome_o365
    myanalytics.microsoft.com = chrome_o365
    whiteboard.microsoft.com  = chrome_o365
    compliance.microsoft.com  = chrome_o365
    flow.microsoft.com        = chrome_o365
    *.flow.microsoft.com      = chrome_o365
    forms.microsoft.com       = chrome_o365
    teams.microsoft.com       = chrome_o365
    *.teams.microsoft.com     = chrome_o365
    office.com                = chrome_o365
    *.office.com              = chrome_o365
    *.powerapps.com           = chrome_o365
    *.powerbi.com             = chrome_o365
    security.microsoft.com    = chrome_o365
    *.microsoftstream.com     = chrome_o365
    manage.kaiza.la           = chrome_o365
    miniasp-my.sharepoint.com = chrome_o365
    miniasp.sharepoint.com    = chrome_o365
    www.yammer.com            = chrome_o365
    *.dynamics.com            = chrome_o365
    ```
    
3.  註冊新瀏覽器到系統中
    
    設定檔完成後，就透過以下命令將 `DanTup.BrowserSelector` 註冊到系統瀏覽器清單中：
    
    ```bash
    BrowserSelector.exe --register
    ```
    
    > 如果要取消註冊，可以執行 `BrowserSelector.exe --unregister`。
    
4.  修改系統設定置換**預設瀏覽器**為 `DanTup.BrowserSelector`
    
    使用 Windows 10 內建的功能搜尋「**預設瀏覽器**」(Choose a default browser)，並將**預設瀏覽器**調整為 `DanTup.BrowserSelector`
    
    ![將預設瀏覽器調整為 DanTup.BrowserSelector](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/15234246149b2abf5c2a-86333644-c4b02200-bc7e-11ea-93f8-f5689fe87d84.png)
    

### 相關連結

-   [https://github.com/doggy8088/BrowserSelector](https://github.com/doggy8088/BrowserSelector)
-   [Simple Windows utility to act as default browser and launch different browsers based on domain](https://blog.dantup.com/2015/09/simple-windows-browser-selector/)
