From 133b0ff7da618613fb078d9c856fc488c7b81ca8 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 29 Dec 2024 10:18:08 +0800 Subject: [PATCH] :art: Support one-click addition of Microsoft Defender exclusions https://github.com/siyuan-note/siyuan/issues/13650 --- app/appearance/langs/ar_SA.json | 3 ++- app/appearance/langs/de_DE.json | 3 ++- app/appearance/langs/en_US.json | 3 ++- app/appearance/langs/es_ES.json | 3 ++- app/appearance/langs/fr_FR.json | 3 ++- app/appearance/langs/he_IL.json | 3 ++- app/appearance/langs/it_IT.json | 3 ++- app/appearance/langs/ja_JP.json | 3 ++- app/appearance/langs/pl_PL.json | 3 ++- app/appearance/langs/ru_RU.json | 3 ++- app/appearance/langs/zh_CHT.json | 3 ++- app/appearance/langs/zh_CN.json | 3 ++- kernel/model/elevator_windows.go | 31 +++---------------------------- 13 files changed, 27 insertions(+), 40 deletions(-) diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index be87a7a15..314145364 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -1578,6 +1578,7 @@ "248": "العنوان المستهدف يقع في كتلة الحاوية ولا يمكن استخدامه كنقطة إسقاط", "249": "تعذر الوصول إلى البيانات بسبب خطأ في الإعدادات. الرجاء التحقق من الإعدادات وأذونات التخزين السحابية", "250": "تم تحديد معدل الطلب بواسطة التخزين السحابي. الرجاء التحقق من الإعدادات وأذونات التخزين السحابية", - "251": "‫مجموع الأصول غير المستخدمة [%d]، [%d] فقط منها مدرج هنا‬" + "251": "‫مجموع الأصول غير المستخدمة [%d]، [%d] فقط منها مدرج هنا‬", + "252": "\uD83D\uDEA8 قد يقوم Microsoft Defender بحذف النواة عن طريق الخطأ، وحذف البيانات وتقليل الأداء بشكل كبير. يوصى بإضافة مسار التثبيت ومسار مساحة العمل الخاصة بـ SiYuan إلى قائمة الاستثناءات " } } \ No newline at end of file diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 3b060228d..aa7d3fb3e 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -1578,6 +1578,7 @@ "248": "Die Zielfüberschrift befindet sich im Containerblock und kann nicht als Ablagepunkt verwendet werden.", "249": "Aufgrund eines Konfigurationsfehlers kann nicht auf die Daten zugegriffen werden. Bitte überprüfen Sie die Einstellungen und die Berechtigungen für den Cloud-Speicher", "250": "Die Anfrage wurde vom Cloud-Speicher begrenzt. Bitte überprüfen Sie die Einstellungen und die Berechtigungen für den Cloud-Speicher", - "251": "Insgesamt ungenutzte Assets [%d], hier nur [%d] aufgeführt" + "251": "Insgesamt ungenutzte Assets [%d], hier nur [%d] aufgeführt", + "252": "\uD83D\uDEA8 Microsoft Defender könnte fälschlicherweise den Kernel löschen, Daten löschen und die Leistung erheblich verringern. Es wird empfohlen, den Installationspfad und den Arbeitsbereich von SiYuan zur Ausschlussliste hinzuzufügen " } } diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 891d9c726..3de970008 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1578,6 +1578,7 @@ "248": "The target heading is located in the container block and cannot be used as a drop point", "249": "Unable to access data due to configuration error. Please check the settings and cloud storage permissions", "250": "Request has been rate-limited by cloud storage. Please check the settings and cloud storage permissions", - "251": "Total unused assets [%d], only [%d] listed here" + "251": "Total unused assets [%d], only [%d] listed here", + "252": "\uD83D\uDEA8 Microsoft Defender may mistakenly delete the kernel, delete data, and significantly reduce performance. It is recommended to add the SiYuan installation path and workspace path to the exclusion list " } } diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 3da7ce6e2..d167ff408 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1578,6 +1578,7 @@ "248": "El rumbo de destino está ubicado en el bloque contenedor y no puede usarse como punto de entrega", "249": "No se puede acceder a los datos debido a un error de configuración. Por favor, verifique las configuraciones y permisos de almacenamiento en la nube", "250": "La solicitud ha sido limitada por el almacenamiento en la nube. Por favor, verifique las configuraciones y permisos de almacenamiento en la nube", - "251": "Total de activos no utilizados [%d], solo [%d] listados aquí" + "251": "Total de activos no utilizados [%d], solo [%d] listados aquí", + "252": "\uD83D\uDEA8 Microsoft Defender puede eliminar por error el núcleo, eliminar datos y reducir significativamente el rendimiento. Se recomienda agregar la ruta de instalación y el espacio de trabajo de SiYuan a la lista de exclusiones " } } diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 452cb8b07..9260a99da 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1578,6 +1578,7 @@ "248": "Le cap cible est situé dans le bloc conteneur et ne peut pas être utilisé comme point de dépôt", "249": "Impossible d'accéder aux données en raison d'une erreur de configuration. Veuillez vérifier les paramètres et les autorisations de stockage cloud", "250": "La demande a été limitée par le stockage cloud. Veuillez vérifier les paramètres et les autorisations de stockage cloud", - "251": "Total des actifs inutilisés [%d], seulement [%d] listés ici" + "251": "Total des actifs inutilisés [%d], seulement [%d] listés ici", + "252": "\uD83D\uDEA8 Microsoft Defender peut supprimer par erreur le noyau, supprimer des données et réduire considérablement les performances. Il est recommandé d'ajouter le chemin d'installation et l'espace de travail de SiYuan à la liste des exclusions " } } diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 1b9dde164..faaa866cd 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -1578,6 +1578,7 @@ "248": "הכותרת היעד ממוקמת בבלוק המיכל ואינה יכולה לשמש כנקודת זרימה", "249": "אין אפשרות לגשת לנתונים עקב שגיאת תצורה. אנא בדוק את ההגדרות והרשאות האחסון בענן", "250": "הבקשה הוגבלה על ידי אחסון הענן. אנא בדוק את ההגדרות והרשאות האחסון בענן", - "251": "סך כל הנכסים שלא נעשה בהם שימוש [%d], רק [%d] מופיעים כאן" + "251": "סך כל הנכסים שלא נעשה בהם שימוש [%d], רק [%d] מופיעים כאן", + "252": "\uD83D\uDEA8 Microsoft Defender עלול למחוק בטעות את הליבה, למחוק נתונים ולהפחית משמעותית את הביצועים. מומלץ להוסיף את נתיב ההתקנה ונתיב סביבת העבודה של SiYuan לרשימת החריגים " } } diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index 67fb9e2c0..26b031a6b 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -1578,6 +1578,7 @@ "248": "L'intestazione di destinazione si trova nel blocco contenitore e non può essere utilizzata come punto di rilascio", "249": "Impossibile accedere ai dati a causa di un errore di configurazione. Si prega di controllare attentamente le impostazioni e le autorizzazioni di archiviazione cloud", "250": "La richiesta è stata limitata dall'archiviazione cloud. Si prega di controllare attentamente le impostazioni e le autorizzazioni di archiviazione cloud", - "251": "Totale risorse inutilizzate [%d], qui elencate solo [%d]" + "251": "Totale risorse inutilizzate [%d], qui elencate solo [%d]", + "252": "\uD83D\uDEA8 Microsoft Defender potrebbe eliminare erroneamente il kernel, eliminare i dati e ridurre significativamente le prestazioni. Si consiglia di aggiungere il percorso di installazione e lo spazio di lavoro di SiYuan all'elenco delle esclusioni " } } diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index d28aeb5de..44856dc22 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1578,6 +1578,7 @@ "248": "目標の見出しがコンテナブロック内にあるためドロップできません", "249": "設定エラーのためデータにアクセスできません。設定を一つずつ確認し、クラウドストレージの権限を確認してください", "250": "リクエストがクラウドストレージによって制限されました。設定を一つずつ確認し、クラウドストレージの権限を確認してください", - "251": "未使用のアセットの合計 [%d]、ここにリストされているのは [%d] のみ" + "251": "未使用のアセットの合計 [%d]、ここにリストされているのは [%d] のみ", + "252": "\uD83D\uDEA8 Microsoft Defender はカーネルを誤って削除したり、データを削除したり、パフォーマンスを大幅に低下させ��可能性があります。SiYuan のインストールパスとワークスペースパスを除外リストに追加することをお勧めします " } } diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index a4d3b2a3a..6ce6e45e9 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -1578,6 +1578,7 @@ "248": "Docelowy nagłówek znajduje się w bloku kontenera i nie może być użyty jako punkt upuszczenia", "249": "Z powodu błędu konfiguracji nie można uzyskać dostępu do danych. Proszę dokładnie sprawdzić ustawienia i uprawnienia do przechowywania w chmurze", "250": "Żądanie zostało ograniczone przez przechowywanie w chmurze. Proszę dokładnie sprawdzić ustawienia i uprawnienia do przechowywania w chmurze", - "251": "Łączna liczba nieużywanych zasobów [%d], tutaj wymieniono tylko [%d]" + "251": "Łączna liczba nieużywanych zasobów [%d], tutaj wymieniono tylko [%d]", + "252": "\uD83D\uDEA8 Microsoft Defender może błędnie usunąć jądro, usunąć dane i znacznie obniżyć wydajność, zaleca się dodanie ścieżki instalacji i przestrzeni roboczej SiYuan do listy wykluczeń " } } diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index 0a74859de..e9d6a67a9 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -1578,6 +1578,7 @@ "248": "Целевой заголовок находится в контейнерном блоке и не может использоваться как пункт сброса", "249": "Из-за ошибки конфигурации невозможно получить доступ к данным. Пожалуйста, проверьте настройки и права доступа к облачному хранилищу", "250": "Запрос был ограничен облачным хранилищем. Пожалуйста, проверьте настройки и права доступа к облачному хранилищу", - "251": "Всего неиспользованных активов [%d], здесь перечислены только [%d]" + "251": "Всего неиспользованных активов [%d], здесь перечислены только [%d]", + "252": "\uD83D\uDEA8 Microsoft Defender может ошибочно удалить ядро, удалить данные и значительно снизить производительность, рекомендуется добавить путь установки и рабочее пространство SiYuan в список исключений " } } diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index f4a058439..f6a33fd4d 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1578,6 +1578,7 @@ "248": "目標標題位於容器塊中,無法作為放置點", "249": "因配置錯誤導致無法存取數據,請仔細逐個核對配置項,並檢查雲端存儲相關權限配置", "250": "請求已被雲端存儲限流,請仔細逐個核對配置項,並檢查雲端存儲相關權限配置", - "251": "未引用資源一共 ${x} 個,這裡僅列出 ${y} 個" + "251": "未引用資源一共 ${x} 個,這裡僅列出 ${y} 個", + "252": "\uD83D\uDEA8 Microsoft Defender 可能會誤殺內核、誤刪數據和嚴重降低運行性能,建議將思源安裝路徑和工作空間路徑到排除列表" } } diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index f3b180e94..2ffafdfbe 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1578,6 +1578,7 @@ "248": "目标标题位于容器块中,无法作为放置点", "249": "因配置错误导致无法存取数据,请仔细逐个核对配置项,并检查云端存储相关权限配置", "250": "请求已被云端存储限流,请仔细逐个核对配置项,并检查云端存储相关权限配置", - "251": "未引用资源一共 [%d] 个,这里仅列出 [%d] 个" + "251": "未引用资源一共 [%d] 个,这里仅列出 [%d] 个", + "252": "\uD83D\uDEA8 Microsoft Defender 可能会误杀内核、误删数据和严重降低运行性能,建议将思源安装路径和工作空间路径到排除列表" } } diff --git a/kernel/model/elevator_windows.go b/kernel/model/elevator_windows.go index 125bd1de5..34d09e095 100644 --- a/kernel/model/elevator_windows.go +++ b/kernel/model/elevator_windows.go @@ -84,10 +84,10 @@ func AddMicrosoftDefenderExclusion() (err error) { } func AutoProcessMicrosoftDefender() { - processMicrosoftDefender() + checkMicrosoftDefender() } -func processMicrosoftDefender() { +func checkMicrosoftDefender() { if !gulu.OS.IsWindows() || Conf.System.MicrosoftDefenderExcluded { return } @@ -106,32 +106,7 @@ func processMicrosoftDefender() { return } - installPath := filepath.Dir(util.WorkingDir) - psArgs := []string{"-Command", "Add-MpPreference", "-ExclusionPath", installPath, ",", util.WorkspaceDir} - if isAdmin() { - cmd := exec.Command("powershell", psArgs...) - gulu.CmdAttr(cmd) - output, err := cmd.CombinedOutput() - if nil != err { - logging.LogErrorf("add Windows Defender exclusion path [%s] failed: %s, %s", installPath, err, string(output)) - return - } - } else { - ps := []string{"powershell"} - ps = append(ps, psArgs...) - verbPtr, _ := syscall.UTF16PtrFromString("runas") - exePtr, _ := syscall.UTF16PtrFromString(elevator) - cwdPtr, _ := syscall.UTF16PtrFromString(util.WorkingDir) - argPtr, _ := syscall.UTF16PtrFromString(strings.Join(ps, " ")) - err := windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, 1) - if err != nil { - logging.LogErrorf("add Windows Defender exclusion path [%s] failed: %s", installPath, err) - return - } - } - - // TODO Conf.System.MicrosoftDefenderExcluded = true - //Conf.Save() + util.PushMsg(Conf.language(252), 0) } func isUsingMicrosoftDefender() bool {