visual studio c# 程式以管理者權限執行
上一篇文章「修改註冊表以停用切換中文輸入法(shift鍵)」設定註冊表需要管理者權限,若以c#程式撰寫,需修改設定檔案Manifest才能讓程式以管理者權限執行。
上一篇文章「修改註冊表以停用切換中文輸入法(shift鍵)」設定註冊表需要管理者權限,若以c#程式撰寫,需修改設定檔案Manifest才能讓程式以管理者權限執行。
話說我一度以為酪梨醬解決了切換中文輸入的問題,結果並沒有,真是掉漆。
後來我只能退而求其次,使用酪梨醬之前,先關掉左邊shift鍵來停用主機本體的中文切換,這樣就可以解決遠端連線切換問題;使用完畢後,再還原主機本體的左邊shift鍵。
這樣做法對我來說不是很難,但難的是”會忘記”切換回來,所以我也不用問麻瓜了,自己都不能接受這做法。
於是我再再退而求其次,找到透過「修改註冊表」的方式,來「停用/啟用」切換中文輸入法。
# dos 指令
# 0x00000001 (啟用)、0x00000002 (停用)
powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000002
這樣或許我就可以寫個簡單的windows程式,或是批次檔案,一旦執行,會先關閉左邊shift鍵切換中文功能,然後召換chrome瀏覽器帶出酪梨醬網址,使用完畢後,程式或是批次檔案會自動回原回原本的設定,這樣就不會再忘記切換回來了。
# dos 指令 (存成bat檔案) powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000002 powershell -NoProfile -Command ^ Start-Process -passthru chrome.exe '酪梨醬網址' ; ^ while ((get-process -name chrome).count -ne 0){} powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000001
guacamole是很棒的網頁版遠端連線工具,就差在切換輸入法不是那麼簡便。
公司可以安裝酪梨醬,綁定員工帳號只能連到員工主機,也不開放員工自行設定連線,搭配現在guacamole已經可以設定遠端開機,就可以讓員工遠距連線工作,而公司方面可以計算員工工時,若員工加班也能有所憑證。
我安裝的酪梨醬使用mysql,計算工時的語法如下:
# 可計算同一天連線小時(小數第二位)
SELECT username ,DATE_FORMAT(start_date, "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
group by username,the_same_date
order by username,the_same_date desc
#若資料庫時區沒有調整,預設是UTC,可暫時使用CONVERT_TZ轉換正確時區
SELECT username ,DATE_FORMAT(CONVERT_TZ(start_date,'+00:00','+08:00'), "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
group by username,the_same_date
order by username,the_same_date desc
# 排除每次連線低於30分鐘
SELECT username ,DATE_FORMAT(start_date, "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
where TIMESTAMPDIFF(MINUTE,start_date,end_date) >= 30
group by username,the_same_date
order by username,the_same_date desc
#若資料庫時區沒有調整,預設是UTC,可暫時使用CONVERT_TZ轉換正確時區
SELECT username ,DATE_FORMAT(CONVERT_TZ(start_date,'+00:00','+08:00'), "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
where TIMESTAMPDIFF(MINUTE,start_date,end_date) >= 30
group by username,the_same_date
order by username,the_same_date desc
為了員工健康,要設定上線時間
另外酪梨醬預設60分鐘沒有任何遠端連線,會整個登出。
可搭配遠端桌面連線相關設定
vi guacamole.properties
##### 修改30分鐘整個網頁登出(必須在沒有任何連線的情況下)
api-session-timeout:30
可以搭配設定閒置30分鐘後,遠端桌面連線自動登出,此時酪梨醬沒有任何連線了,過30分鐘也跟著登出了。
以前安裝wordpress容器的時候,可以利用–link參數,綁定以有的資料庫容器(mariadb),讓資料庫容器主機名稱變身成「mysql」,就可以不用安裝一大堆資料庫容器惹。(wordpress容器只認mysql這個主機(host)名稱,所以我們不得已而這樣做)
我先前的文章舊版(Docker)(WordPress)如何使用docker安裝wordpress (帳密皆為guest),也是建議醬做;可是好景不常,docker終於受不了了,新版廢棄–link參數,podman也跟進。
當然會這樣做一定是為了區分子網路,方便管理使用,我也「被」樂見其成,因此我安裝wordpress也必須避開–link參數。
該如何做呢? 以podman為例子,首先我們要想一個很威的網路橋接名稱mynet(可自訂):
podman create network mynet
然後將以前就有的資料庫容器,加到這個網路橋接器上:
podman network connect mynet mariadb-container
接下來賦予資料庫容器別名,讓資料庫變身成wordpress心目中的mysql:
podman network connect --alias mysql mynet mariadb-container
這樣一來安裝wordpress就可以不用加上 –link 這個參數,且wordpress容器也能自動認得資料庫容器了。
在tomcat server裡, 程式專案預設放在 webapps 目錄底下, 假設專案為 guacamole.
程式會放在 webapps/guacamole , 網址則為 http(s)://x.x.x.x/guacamole
若想直接輸入 http(s)://x.x.x.x , 自動引導入到 http(s)://x.x.x.x/guacamole , 則必須在 webapps 建立ROOT目錄, 以及在ROOT目錄下, 建立 index.html , index.htm, 或 index.jsp 這三種任一種welcome 檔案.
docker 容器的酪梨醬(guacamole 1.4.0 版本), tomcat 設定檔案在 /home/guacamole/tomcat 底下, 請建立一個含以下內容的 tomcat/webapps/ROOT/index.html 檔案即可.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" content="0; url='https://x.x.x.x/guacamole'" />
</head>
<body>
<p>Please follow <a href="https://x.x.x.x/guacamole">this link</a>.</p>
</body>
</html>
酪梨醬1.4.0的docker版本 , 預設改用非root帳號,
若需要額外安裝container裡面的套件, 必須以root帳號登入
docker exec -u root -it <container name> bash
酪梨醬(https://guacamole.apache.org/)是非常好用的遠端連線工具,可以讓員工輕輕鬆鬆在家,透過瀏覽器遠距辦公,而且不需要額外安裝vpn或是其他連線軟體;但酪梨醬最煩人的就是中文輸入法很難切換,用戶端的作業系統與遠端的主機作業系統,常常不一致,導致輸入有問題,必須改用滑鼠點選切換中英文,而不能用平常shift鍵切換,今天升級到1.4.0 發現這個問題似乎得到解決, 實在太棒了。
2024/03/07
後來發現還是沒解決,但我苦思很久最近突然有所感悟,居然突破僵化的思維了,方法簡單,只要”停掉”本機的中英文切換鍵「shift」就可以了(左撇子關右邊,右撇子關左邊),可惜這個方法只解一半,使用遠端連線完畢,本機的shift鍵需要改回來,但我已經很滿意了,至少不會因為頻繁切換中英文,點滑鼠點到非常生氣(畢竟不是常用的切換方式);若習慣使用ctrl-space切換中英文的人,也沒關係,停用本機shift後,以後連到遠端就改用shift切換即可。
2024/03/21
我寫了一個windows簡單的程式(x64),可以暫時解決輸入法切換問題,論述基礎為修改windows註冊表
程式也開源:https://github.com/WilliamFromTW/ApacheGuacamoleIMEswitch
點此下載程式
2024/03/22
改成開啟酪梨醬遠端連線時,系統會先自動停用本機左邊shift鍵(當然也自行可以手動停用),等到關閉程式時,會恢復左邊shift鍵。
**** Myrtille 藍莓 已經不再維護了
這幾天台灣爆發covid-19大規模感染, 可能又要實施居加辦公.
先前使用apache guacamole(酪梨醬)表現很不錯, 但是有很多設定, 員工無法自行完成, 需要IT人員一個個協助, 非常費時.
因此我網上找了找 html5 Remote Access Gateway github , 找到了 Myrtille 藍莓 也能達到遠端連線的功能 , 安裝方式很簡單, 可裝在windows 10(只能10個連線) 或是 windows 2012, 2016 , 安裝完畢, 再用 apache httpd reverse 方式加上letsencrypt憑證 , 就可以上線讓使用者使用, 使用者登入web後, 只需要知道自己公司電腦local ip ,帳號密碼, 就能連線, 非常方便, 缺點是中文輸入法失效(問題已回報), 要使用藍莓提供的”TEXT”功能, 進行傳送.
對照於大公司早已經實施行動辦公, 只要有vpn連線就不需要連到公司的主機做事, 我這方式算是半封閉的作法.
因為我不是資安專家, 超怕server被加密的, 但公司上班不允許使用行動設備(筆電,平板), 上班一律使用桌機, 在家若要辦公, 無vpn連線情況下, 只能用我們這種網頁RDP轉HTML5的方式,連線 這做法也算有資安防護力, 給大家參考.
安裝完網頁版的遠端桌面連線, 非常方便, 又可突破中國的VPN封鎖,
但是檔案傳輸呢?
官方連結在此, 重點在輸入ctrl+alt+shift 就可以打開選單, 進行檔案上傳與下載
https://guacamole.apache.org/doc/gug/using-guacamole.html
咖啡偶的圖文並茂版在此IT地窖練功中心
安裝apache guacamole 酪梨醬, 取代目前主流之遠端連線:teamview, google 遠端桌面.
但這兩個一個是要花錢(teamviewer), 不然就是被擋(google在大陸被擋).
因此公司通常會準備ppp vpn連線,讓麻瓜使用者能連線到內部主機,
而且很多寬頻分享器內建此功能, 安裝非常方便, 例如totolink.
但是呢, 麻瓜使用者, 連執行連線ppp vpn連線都有障礙, 會忘記.
但他們只是要能夠連到內部主機做事而已!
因此IT人員可安裝酪梨醬-網頁版的遠端桌面連線伺服器,
讓麻瓜們只要懂得使用瀏覽器, 就能無障礙使用連線到內部主機.
請詳細作法請參考 10013_(Docker)使用安裝guacamole酪梨醬.txt
—
2018/03/27
– 新增如何讓guacamole可以正常進行檔案傳輸
ps.
Guacamole(酪梨醬)-網頁版的遠端桌面連線伺服器,為apache專案(https://guacamole.apache.org)