advanced installer 匯入vs 2019 出現 System.Runtime.CompilerServices.Unsafe 錯誤

好久沒有打包自己開發的程式,尤其是msi 或是 msix 方便讓網域主控站派送,
因此試用了advanced installer 17.5, 欲藉由匯入visual studio 2019 專案, 打包成msi檔案,

但是出現了,以下錯誤,

.ctor could not load file or assembly system.runtime.compilerservices.unsafe 4.0.4.1

原以為是vs的問題, 後來爬文終於找到解法, 這個問題似乎出現很久, advanced installer 呈現已知但是無解的狀態,看來真的很複雜.
步驟1. 安裝.net framework 4.7.2 (請與vs專案參考版本同步)
步驟2. 以管理者身分執行, developer command prompt for vs 2019

developer command prompt for vs 2019

步驟3. 輸入以下指令(請與vs專案參考版本同步)

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll"

gacutil /f -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Numerics.Vectors.dll"

老派的outlook 使用習慣

我個人很喜歡老派這個字, 英文叫做 old school


周遭的人有好多好多老派的人, 他們不喜歡網頁版郵件, 只習慣使用單機版的outlook收發信件, 作業系統更是windows不做他想.
因為公司多了一個越南廠, 考量初期VPN自架, 不作為主力, 該廠的通訊錄就無法透過vpn, 以LDAP方式分享 .

可是outlook通訊錄就只有兩種 : MAPI, LDAP
MAPI可以是離線版, LDAP必須連線才能使用

偏偏老派的做風就是: 離線也要能寫寫郵件, 看看郵件(pop3完全下載), 與存取完整的通訊錄

這下好了, 我得準備離線版的通訊錄, 爬文好幾天, 終於找到一個方式跟大家分享:

  1. 網域伺服器新增排程, 可下指令自動產生csv版本的通訊錄
  2. 自己開發一個app , 方便老派的人使用, 將csv檔案自動匯入到outlook通訊錄

網域伺服器上, 可透過powershell執行指令,匯出csv通訊錄

Get-ADUser -Filter 'mail -like "*<domain>"' -SearchBase "<search base>" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "<csv file location>" -NoTypeInformation -Encoding UTF8

以test.com為例子

Get-ADUser -Filter 'mail -like "*test.com"' -SearchBase "OU=taipei,DC=test,DC=com" -Properties * | Select -Property DisplayName,GivenName,Surname,mail,Title,Department,Office | Export-CSV "c:\aaa.csv" -NoTypeInformation -Encoding UTF8

我開發的windows app, 使用visual studio 2019 community version , 語言使用vb

https://github.com/WilliamFromTW/ImportFromCsvToOutlook
https://github.com/WilliamFromTW/ImportFromCsvToOutlook/releases

因為時間不多, 未來也不打算花太多時間在通訊錄上面, 爬文的過程只能找到零星vba for outlook版本或是程式片段, 四處碰壁, 無人可以解答, 頂多就是要你教老派的人, 使用outlook匯出匯入功能, 一堆步驟, 將csv檔案匯入到outlook, 這簡直是天方夜譚.
因此就自行開發,並且開源, 這樣直接編譯成可安裝執行的APP, 讓他們透過定期提供的csv檔案, 就能很方便匯入通訊錄了.

(docker)透過Web修改Active Directory密碼-PWM

微軟的網域主控站非常好用, 尤其用來管控帳號密碼.
但是修改密碼,就必須透過加入網域的主機才能修改, 有點不方便,
尤其有些人的電腦並沒有加入網域, 要是想改密碼更是麻煩.

基於APACHE 2.0授權的 https://github.com/pwm-project/pwm 就能協助我們修改密碼.

簡易安裝步驟:



確認AD安裝certificate service


產生ad自己的證書(需要有private key) , 否則無法使用port 636 + tls 加密方式連線


安裝


1. 下載做好的container
https://www.pwm-project.org/artifacts/pwm
下載最新版docker images .tar 檔案
如:
wget https://www.pwm-project.org/artifacts/pwm/build/2020-08-20T23_36_49Z/pwm-docker-image-2.0.0-SNAPSHOT.tar

2. 安裝
docker load –input=pwm-docker-image-2.0.0-SNAPSHOT.tar

3. docker 執行
docker run -d –name pwm -p 8443:8443 –restart always –dns=<active directory ip> -v “/opt/pwm/config/:/config/” pwm/pwm-webapp

4. 登入進行第一次安裝設定
https://ip:84443/


安裝過程注意事項:


1. 連線要用加密的方式,否則無法改密碼
2. 要提供管理者群組的LDAP
如:
CN=Domain Admins,CN=Users,DC=test,DC=com
3. 因為PWM額外提供安全提問, 這些提問並不是Active Directory原本的, 需要另外提供空間,此時請選擇local db存放.
其實這不是很重要, 忘了密碼,還能在域控直接修改

安裝成功後, 請先用管理者帳號登入, 登入時需要額外設定忘記密碼的安全提問(管理者可直接跳過),
此時要選擇修改設定檔案, 將修改密碼的複雜度降低(但不可低於原本網域設定), 我是順便將安全提問改成一個就好.

搭配httpd reverse proxy


需修改SiteURL,改完需要重開pwm才能生效
這種方式可以讓網址擁有正式的加密證書(e.g. let’s encrypt)

快速新增網域ldap通訊錄(outlook 2016)

以前要新增ldap通訊錄,非常麻煩, 一堆設定, 昨天找了一些資源, 包括想要從registry方面下手都失敗, 好險有人寫了一個超方便的程式, 可以快速新增ldap 通訊錄, 感謝啊!

https://github.com/andreighita/MAPIToolkit

官網很詳細寫了說明, 我也整理了一下給大家下載

安裝roundcube心得

前陣子弄了docker image postfixad , 可以讓我簡單架設可與網域主控站整合的郵件服務器.


既然有了郵件服務器, 通常還要提供roundcube這類的webmail ,

但是我不想使用webmail的最大問題: 就是帳號跟郵件不一致

登入webmail的帳號與email不相同時, 就很麻煩, 例如:
登入的帳號是 001 , 可是emai卻變成 001@kafeiou.pw , 而不是網域在mail屬性建立的william@kafeiou.pw
這困擾我很久, 甚至想要自己寫一個roundcube的plugin , 想要登入的時候, 改寫email,

後來發現roundcube有個plugin很好用, 就是 new_user_dialog , 啟用後,第一次登入,會強迫設定名字與email, 雖然帳號與email不相同, 就讓麻瓜自行更改吧, 哈

以下列出docker 安裝roundcube方式

docker run --restart always --name roundcubemail -e ROUNDCUBEMAIL_DEFAULT_HOST=tls://<郵件主機> -e ROUNDCUBEMAIL_SMTP_SERVER=tls://<郵件主機> -p 8080:80 -d roundcube/roundcubemail


windows 10 (2004) 無法更新office 2016

最近發現office 2016的outlook收信出現信收到了, 但是有些卻看不到, 改用webmail卻又正常顯示出來, 查看一下發生的情境應該是 windows 10 (2004版本) + office 2016 , 因為office 2016安裝完畢無法進行更新, 所以出現無法正常收信的情形, 因此必須讓系統能自動更新office.

官網上寫說兩個步驟
1. 執行office任一程式, 如word , excel , 第一次執行的時候會詢問更新策略, 選擇自動更新
2. windows 內建的更新功能, 選取進階選項, 確認更新時,接收其他microsoft產品更新


若還是不行, 可自行修改registry

HKEY_LOCAL_MACHINE\software\policies\microsoft\office\16.0\common\OfficeUpdate
DWORD: EnableAutomaticUpdates
Value: 1

或是執行別人做好的更新程式
https://kafeiou.pw/wp-content/uploads/2020/07/Office2016_C2R_RegUpdate.zip

docker快速建立支援Active Directory的Mail Server

每次需要建立一套 Active Directory + Postfix Mail Server + amavisd , 都會讓我覺得困擾, 因為設定複雜, 枯燥也乏味

因此弄了一個docker 版 postfix mailserver 支援微軟網域伺服器, 這樣就方便多了
功能不多, 但基本防毒, 簡易擋廣告, 加密證書(Let’s Encrypt), aliases, 信箱限制內部使用, open dkim等等都支援.

Dockerfile 源碼
—-
https://github.com/WilliamFromTW/docker-Postfix-AD

docker image
—-

https://hub.docker.com/r/inmethod/docker-postfix-ad

1 ... 8 9 10 11