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
一般來說個人用的Windows,本機帳號可以直接登入;若為公司網域帳號或個人m$的帳號,就必須經過認證(密碼,認證器)才能登入。而且windows會記住上次登入的帳號,重開機後,會直接顯示該帳號,我們只要輸入密碼,就能登入了。
但是麻瓜們總是會忘記自己登入的帳號,一旦有人用其他帳號登入,那麼下次開機,windows顯示的就不是原本麻瓜的帳號,這樣麻瓜會爆走,IT就挨踢了。
為了解決這個問題,我挖阿挖阿挖,在這裡找到解法,只要修改註冊值,重新開機就好了。
註冊表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI
註冊值
LastLoggedOnDisplayName 這我沒看到,沒設定好像也沒差
LastLoggedOnSAMUser 設定「網域\帳號」,如:SHORTDOMAIN\kafeiou
LastLoggedOnUser 設定「網域\帳號」,如:SHORTDOMAIN\kafeiou
LastLoggedOnUserSID 輸入該帳號的SID,如:S-1-5-21-112
SelectedUserSID 輸入該帳號的SID,如:S-1-5-21-112
其中SID取得方式:
wmic useraccount where name='登入帳號'
**臨時用其他帳號登入,又不想被人家發現,可以以照上述方法(需管理者權限),改回原本登入帳號。
公司有個RedHat 5.x伺服器系統,安裝git 2.9 ,多年以來使用上一直相安無事;沒想到因為全面停用tls 1.0,導致git無法使用。
RedHat Linux系統在無法升級的情況下,git就再起不能;最後我指定其中一台windows主機,安裝RaiDrive透過sftp掛載Linux伺服器的git目錄,使其變成windows其中的一個磁碟,再透過windows的git用戶端,達到讓Linux伺服器裡面的資料能上git版控的目標。
就在我在windows主機上,順利掛載Linux目錄後,接著準備將資料push到git server,豈料出現一大堆檔案呈現已修改狀態,提示我這些檔案要commit,但是實際上這些檔案沒有任何異動修改;我追查了一下,發現是換行字元搞的鬼,Linux換行只有\n ,windows則為\r\n;
windows掛載Linux檔案,因為換行字元不同,當然會被誤認檔案被修改過。
解決方式,在windows掛載linux情況下,執行以下git指令,就可以解決了。
git config --global core.autocrlf true
git config core.filemode false
git status
我有一台13年前的pentium老電腦4GB ram,安裝windows 10、windows 11都覺得好慢好慢,偶然間看到「雲爸的私處」寫的一篇文章「低端電腦救星 ReviOS Windows 11精簡版系統」,文章推薦的「Revision」是開源軟體。該軟體以前會提供整個windows iso檔,讓人下載後直接安裝;後來改成「腳本」方式,我們只要正常安裝windows,再執行AME Wizard優化程式,載入Revision的腳本,就可以讓舊電腦優化了。
windows畢竟還是主流,所以在windows上設定restic備份之後,事後要提取還原,windows系統上必須搭配好用的GUI軟體,因此我推薦 https://github.com/emuell/restic-browser
outlook作為麻瓜收發郵件軟體最高殿堂,另存檔案當然只能讓outlook打開,其餘閒雜軟體皆不可冒犯。
某日一麻瓜以附件方式,寄給朋友,豈料朋友並沒有outlook,無法開啟msg格式附件,真是大膽!麻瓜求助郎中,郎中開出一帖msgviewer軟體,該軟體佐以java服用,即可將outlook之msg檔案,轉成eml格式(國際標準rfc822格式),經熬煮60個時辰煉化成eml,檔案寄給朋友,朋友以異端thunderbird軟體開啟,正確無誤。
一直以來我都以為檔案總管的檔案,只能依照上面的欄位進行排序,但是今天被中國同事教育了一番,我錯了!
這位同事工作需要拍照,再將照片存到電腦,檔案總管選擇「圖示(大中小)」進行手動排序,就可以很容易觀看到差異;原本他使用的電腦可以這樣隨意移動,但是換個電腦就不行。
最後問到我這裡來,我就說不可能,只能針對上面的欄位進行自動排序(信心滿滿);但是該同事啪啪打臉我,拿能自己排序的電腦給我看,最後我汗顏了,真是不能太鐵齒。
後來才發現,這功能是windows xp專有的,也就是xp能夠停用「自動排序」,win7以後基本上不能停用自動排序,於是有神人就弄出可以停用自動排序的設定檔案,請按此下載,解開點兩下就可以了。
nextcloud若能跟公司內部的檔案伺服器連線,在外面就能方便存取公司檔案,也不失為一個好方法;只要安裝「External Storage Support」這個app就能存取外部檔案。
External Storage support 預設無法連線windows檔案伺服器,我們需要額外安裝一些套件,安裝完畢就能支援了。
docker(podman) exec -it <nextcloud container> bash apt update apt -y install libsmbclient-dev libmagickwand-dev pecl install smbclient pecl install inotify echo "extension=smbclient.so" > /usr/local/etc/php/conf.d/docker-php-ext-smbclient.ini echo "extension=inotify.so" > /usr/local/etc/php/conf.d/docker-php-ext-inotify.ini
安裝相關套件後,就能選取到「SMB/CIFS」
原本連線到\\10.1xxx.x.x\taipei 拆開成兩部分,帳號若屬於網域,也要填進去,最後還限制群組使用
一直以來公司的通訊錄使用ldap方式獲取。但是ldap缺點有二:
1、若連不上網域伺服器(越南夏天會停電還一次停兩天),就算我們使用outlook時,並不需要用到通訊錄,但outlook還是會一直出現錯誤,解決方式如下:outlook 關於ldap通訊錄的處理經驗。
2、只能在內網使用,筆電拿到公司外就連不上網域主控站,outlook就會開始罵罵號。
這問題我滿頭痛的,好險最近我開始把重心放在nextcloud上,發現可以透過webdav連線方式,從網際網路直接獲取通訊錄以及行事曆,這樣可以解決上面兩個問題;雖然以後多了一個維護的地方,但這可以解決很多麻煩事,而且好處多多,例如可以透過手機、網頁等等多元方式,直接取得聯絡人以及行事曆。
說做就做,我連上公司nextcloud雲端系統後,原本打算一筆一筆「手動」輸入數百筆通訊錄,但是想想還是從三個廠的網域主控站匯出聯絡人比較實在,再由nextcloud提供的匯入功能匯入即可。
nextcloud提供匯入的檔案格式為vcf format,意即VCARD,而且規定要3.0或以上版本才能匯入,格式長這樣:
BEGIN:VCARD VERSION:3.0 FN:william ORG:HT TITLE: TEL;TYPE=WORK: TEL;TYPE=HOME: TEL;TYPE=CELL: EMAIL;TYPE=WORK:william@test.com CATEGORIES:test NOTE: UID:79996fd9-b2d6-1111-111e-85f7cd5896e5 END:VCARD
這種需求當然往github找尋解方,找了很久都是2.0的powershell腳本,後來終於在這裡找到,試跑了一次還ok,就差在沒有使用utf8輸出,匯入nextcloud會有亂碼,因此我改了一下寫法如下:
紅色部分請自行斟酌修改,存成xxx.ps1 並且在powershell裡執行;要注意屬性CATEGORIES,對應到nextcloud的聯絡人群組(Contact Group),這很重要。
<#
.SYNOPSIS
Export AD Users as single vcf file
#>
cls
$filename = "C:\temp\vCards.vcf"
remove-item $filename
Get-ADUser -filter {Enabled -eq $True} -Properties * | where {$_.enabled -eq $true} | Foreach-Object {
$user = $_.sAMAccountName
$email = $_.EmailAddress
$phone = $_.OfficePhone
$name = $_.Name
$short = $_.HomePhone
$mobile = $_.MobilePhone
$sede = $_.physicalDeliveryOfficeName
$ufficio = $_.Department
$qualifica = $_.title
$responsabile = ($_.manager -split ',*..=')[1]
if ($phone -or $email -or $mobile){
write-host $user
# Generate vCard
Add-Content -Encoding UTF8 -Path $filename "BEGIN:VCARD"
Add-Content -Encoding UTF8 -Path $filename "VERSION:3.0"
Add-Content -Encoding UTF8 -Path $filename ("FN:" + $_.cn)
Add-Content -Encoding UTF8 -Path $filename ("ORG:test")
Add-Content -Encoding UTF8 -Path $filename ("TITLE:" + $qualifica)
Add-Content -Encoding UTF8 -Path $filename ("TEL;TYPE=WORK:" + $phone)
Add-Content -Encoding UTF8 -Path $filename ("TEL;TYPE=HOME:" + $short)
Add-Content -Encoding UTF8 -Path $filename ("TEL;TYPE=CELL:" + $mobile)
Add-Content -Encoding UTF8 -Path $filename ("EMAIL;TYPE=WORK:" + $email)
Add-Content -Encoding UTF8 -Path $filename ("CATEGORIES:test")
$notedate = (get-date).ToString('d/MM/yyyy')
Add-Content -Encoding UTF8 -Path $filename ("NOTE:")
Add-Content -Encoding UTF8 -Path $filename ("UID:" + $_.objectGUID )
Add-Content -Encoding UTF8 -Path $filename "END:VCARD" #`r`n"
}
}