From dbec4d5716d2b1e97e1caa317ee3e6d55b6a9121 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 21 Oct 2026 10:20:40 +0200 Subject: [PATCH 1/5] Add the website in German Twelve pages and the language file, with slugs of their own, held against the English pages for shape, commands and tokens and stamped with the English they follow. Co-Authored-By: Claude Sonnet 5.5 --- site/i18n/de.json | 95 +++++++++ site/pages/404/de.html | 30 +++ site/pages/404/page.json | 3 +- site/pages/audit-windows-services/de.html | 65 ++++++ site/pages/audit-windows-services/page.json | 3 +- site/pages/cli-reference/de.html | 194 +++++++++++++++++ site/pages/cli-reference/page.json | 3 +- site/pages/download/de.html | 86 ++++++++ site/pages/download/page.json | 3 +- site/pages/faq/de.html | 78 +++++++ site/pages/faq/page.json | 3 +- site/pages/home/de.html | 201 ++++++++++++++++++ site/pages/home/page.json | 3 +- site/pages/query-language/de.html | 178 ++++++++++++++++ site/pages/query-language/page.json | 3 +- site/pages/sc-exe-and-powershell/de.html | 97 +++++++++ site/pages/sc-exe-and-powershell/page.json | 3 +- site/pages/services-msc-alternative/de.html | 102 +++++++++ site/pages/services-msc-alternative/page.json | 3 +- site/pages/snapshots-and-drift/de.html | 65 ++++++ site/pages/snapshots-and-drift/page.json | 3 +- .../stop-a-service-that-will-not-stop/de.html | 68 ++++++ .../page.json | 3 +- site/pages/what-should-be-running/de.html | 86 ++++++++ site/pages/what-should-be-running/page.json | 3 +- site/site.json | 2 +- 26 files changed, 1370 insertions(+), 13 deletions(-) create mode 100644 site/i18n/de.json create mode 100644 site/pages/404/de.html create mode 100644 site/pages/audit-windows-services/de.html create mode 100644 site/pages/cli-reference/de.html create mode 100644 site/pages/download/de.html create mode 100644 site/pages/faq/de.html create mode 100644 site/pages/home/de.html create mode 100644 site/pages/query-language/de.html create mode 100644 site/pages/sc-exe-and-powershell/de.html create mode 100644 site/pages/services-msc-alternative/de.html create mode 100644 site/pages/snapshots-and-drift/de.html create mode 100644 site/pages/stop-a-service-that-will-not-stop/de.html create mode 100644 site/pages/what-should-be-running/de.html diff --git a/site/i18n/de.json b/site/i18n/de.json new file mode 100644 index 00000000..546380ba --- /dev/null +++ b/site/i18n/de.json @@ -0,0 +1,95 @@ +{ + "_translated_from": "1867e30d6665", + "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.", + + "chrome.skip": "Zum Inhalt springen", + "chrome.nav": "Website", + "chrome.language": "Sprache", + + "chrome.footer.product": "Produkt", + "chrome.footer.guides": "Leitfäden", + "chrome.footer.project": "Projekt", + "chrome.footer.source": "Quelltext auf GitHub", + "chrome.footer.releases": "Releases", + "chrome.footer.issues": "Issue-Tracker", + "chrome.footer.security": "Ein Sicherheitsproblem melden", + "chrome.footer.support": "Das Projekt unterstützen", + + "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Veröffentlicht unter der GNU General Public License, Version 3. Entstanden mit einem KI-gestützten Arbeitsablauf.", + "chrome.legal.trademark": "{{product}} steht in keiner Verbindung zu Microsoft, wird nicht von Microsoft unterstützt und nicht von Microsoft gesponsert. Windows ist eine Marke der Microsoft-Unternehmensgruppe, und der Name wird hier nur verwendet, um zu sagen, was das Werkzeug verwaltet.", + "chrome.legal.privacy": "Diese Website setzt keine Cookies, führt keine Skripte aus und lädt nichts von anderswo.", + + "table.head.code": "Code", + "table.head.meaning": "Bedeutung", + "table.head.switch": "Schalter", + "table.head.what": "Was er tut", + "table.head.where": "Wo er wirkt", + "table.head.field": "Feld", + "table.head.asks": "Fragt nach", + "table.head.values": "Werte", + + "exit.ok": "Erledigt, und alles ist dort angekommen, wohin es sollte.", + "exit.runtime": "Das Werkzeug ist gescheitert - es konnte nicht tun, was verlangt wurde, aus einem Grund, der am Werkzeug liegt und nicht am Plan.", + "exit.usage": "Die Befehlszeile war falsch. Bei einem falsch geschriebenen Befehl wird der angeboten, den Sie wahrscheinlich meinten.", + "exit.incomplete": "Der Plan war gut, er lief, und etwas darin ist nicht dort angekommen, wohin es sollte - der Manager hat abgelehnt, oder die Sitzung hatte keine Rechte dafür.", + "exit.interrupted": "Jemand hat den Lauf von Hand gestoppt. Ungleich null, auch wenn jeder Schritt noch ankam, damit ein Wrapper einen abgebrochenen Lauf nicht als sauber behandelt.", + "exit.differences": "Ein Vergleich lief und fand die Konfiguration abgedriftet - ein Eintrag hinzugefügt oder entfernt, oder einer anders eingerichtet. Der Laufzustand allein ist keine Drift. Nur mit --exit-code, denn Drift zu finden ist wofür dieses Werkzeug da ist, und sie zu finden ist kein Fehler.", + + "switch.query": "Die Liste mit der Abfragesprache eingrenzen.", + "switch.signatures": "Lesen, wer jede Programmdatei signiert hat und ob Windows ihr vertraut. Über einen ganzen Rechner mehrere Sekunden, daher aus, solange nicht danach gefragt wird - und eine Abfrage zu Signaturen schaltet es von selbst ein.", + "switch.memory": "Lesen, was der Prozess jedes laufenden Eintrags verbraucht. Standardmäßig aus, weil es eine Messung und keine Einstellung ist: Eine Sekunde später ist sie anders.", + "switch.required-by": "Lesen, welche Einträge ausfallen, wenn einer angehalten wird, direkt von Windows erfragt und nicht aus dem abgeleitet, was alle angeben. Ein Aufruf pro Eintrag, daher aus, solange nicht danach gefragt wird. show und snapshot create lesen es jedes Mal.", + "switch.follow-network": "Das Werkzeug überhaupt über diesen Rechner hinaus greifen lassen - ein Startpfad auf der Freigabe von jemand anderem und ein Zertifikat, das dieser Rechner noch nicht hat. Aus Sicherheitsgründen standardmäßig aus: Eine nicht erreichbare Freigabe kostet einundzwanzig Sekunden und authentifiziert sich als der, der es ausgeführt hat, und ein Zertifikat zu holen ist eine Verbindung zu einem Dritten mitten in einer gewöhnlichen Auflistung. Ohne es wird eine Signatur gegen das geprüft, was hier ist, und ein Ergebnis, das durch Nichtnachsehen entstanden sein könnte, wird als ungelesen gemeldet und nicht als Urteil.", + "switch.force": "Bei kill den Prozess sofort beenden, ohne höflich zu fragen - die Vorschau zeigt dann einen Schritt statt zwei. Bei snapshot create einen bereits vorhandenen Snapshot ersetzen - eine Datei, die kein Snapshot ist, wird nie ersetzt.", + "switch.restart": "Bei kill den Eintrag zurückbringen, sobald der Prozess weg ist, samt allem, was ihn teilte.", + "switch.stop": "Bei start-type und nur neben disabled den Eintrag im selben Plan anhalten, sobald die Einstellung geschrieben ist. Ein Starttyp ändert den nächsten Start und jetzt nichts, daher läuft ein laufender Eintrag, der auf deaktiviert gesetzt wird, ohne ihn weiter.", + "switch.full": "Bei show auch die Felder ausgeben, die wirklich leer sind. Ein Feld, das niemand lesen konnte, wird in jedem Fall ausgegeben.", + "switch.components": "Bei license aus dem Hinweis jede Komponente in dieser ausführbaren Datei machen, mit Version, Lizenz und Herkunft. Dieselbe Menge, die die neben dem Download veröffentlichte Stückliste trägt, weil beide aus einem Register erzeugt werden.", + "switch.json": "Dasselbe Dokument, maschinenlesbar, auf der Standardausgabe.", + "switch.note": "Wofür der Snapshot erstellt wurde, in der Datei aufbewahrt.", + "switch.exit-code": "Mit Code 5 enden, wenn sich die Konfiguration unterscheidet - ein Eintrag hinzugefügt oder entfernt, oder einer anders eingerichtet. Der Laufzustand allein zählt nicht. Standardmäßig aus, damit ein Skript, das nur die Unterschiede ausgegeben haben will, nicht darüber stolpert, welche zu finden.", + "switch.live": "Die Datei mit diesem Rechner vergleichen, wie er jetzt ist, statt mit einer zweiten Datei.", + "switch.timing": "Wie lange jeder Teil des Lesens gedauert hat, auf der Standardfehlerausgabe.", + "switch.dry-run": "Den Plan ausgeben und nichts ändern. Es ist derselbe Plan, den eine Ausführung abarbeitet - es gibt keinen zweiten Codepfad für den Ernstfall.", + "switch.dependents": "Die Dienste, die ausfallen würden, als eigene Schritte in den Plan aufnehmen.", + "switch.timeout": "Wie lange ein Schritt ohne Fortschritt dauern darf, bevor er aufgegeben wird, jedes Mal neu gezählt, wenn der Dienst Fortschritt meldet. Sechzig Sekunden, sofern Sie nichts anderes sagen. Ein Dienst, der weiter Fortschritt meldet, wird beobachtet, so lange es dauert. Das Ablaufen ist das Ende des Beobachtens und kein Fehler, und der Bericht sagt, wo der Eintrag zurückgelassen wurde.", + + "field.name": "der Dienstname, unter dem Windows ihn kennt", + "field.display": "der Anzeigename, wie dieses Windows ihn schreibt", + "field.description": "was der Eintrag über sich selbst sagt", + "field.type": "was für ein Eintrag es ist", + "field.peruser": "ob es eine der Familien pro Benutzer ist, von denen Windows je Sitzung eine Kopie anlegt", + "field.status": "was er gerade tut", + "field.start": "was der Manager beim nächsten Start mit ihm tut", + "field.account": "das Konto, unter dem er läuft, wie der Manager es schreibt", + "field.pid": "der Prozess, in dem er läuft", + "field.trigger": "eine Bedingung, die ihn startet oder beendet", + "field.path": "die Befehlszeile, die der Manager startet", + "field.file": "ob die Datei, die er ausführt, auf dem Datenträger liegt", + "field.signed": "was Windows von der Signatur der Datei hält, ohne die Sperrung zu prüfen", + "field.publisher": "wer die Datei signiert hat - nur durch eine vertrauenswürdige Signatur bewiesen", + "field.privilege": "ein Privileg, das der Eintrag verlangt", + "field.dependson": "was dieser braucht", + "field.requiredby": "was ausfällt, wenn dieser anhält", + "field.sidtype": "der Typ der Dienst-SID", + "field.sddl": "der Sicherheitsdeskriptor als Text", + "field.memory": "was sein Prozess verbraucht", + "field.mismatch": "Konfiguration und Zustand, die nicht zusammenpassen", + + "field.open.name": "Text", + "field.open.display": "Text", + "field.open.description": "Text", + "field.open.account": "Text, z. B. localsystem", + "field.open.pid": "eine Zahl: 1234, >1000, 100-200", + "field.open.path": "Text", + "field.open.publisher": "Text", + "field.open.privilege": "Text, z. B. SeDebugPrivilege", + "field.open.dependson": "ein Dienstname", + "field.open.requiredby": "ein Dienstname", + "field.open.sddl": "Text", + "field.open.memory": "eine Größe mit Einheit: 500MB, >1GB, 100MB-1GB", + + "reserved.any": "es gibt einen Wert, egal welchen", + "reserved.none": "es gibt wirklich keinen Wert - der Eintrag hat keinen", + "reserved.unreadable": "das Werkzeug konnte dieses Feld nicht lesen oder hat es nicht gelesen, und das ist eine Frage, die services.msc nicht einmal stellen kann" +} diff --git a/site/pages/404/de.html b/site/pages/404/de.html new file mode 100644 index 00000000..7c602ca0 --- /dev/null +++ b/site/pages/404/de.html @@ -0,0 +1,30 @@ + + + + + +
+
+ 404 +

Diese Seite gibt es nicht

+

Die Adresse passt zu nichts auf dieser Website. Dafür wurde nichts gelöscht - Adressen ändern sich hier nicht, denn eine verschobene Seite würde jeden Link zerbrechen, der je auf sie zeigte.

+ +
+
+ +
+
+

Wofür die Leute meist kamen

+
+

Download

Zwei eigenständige ausführbare Dateien oder ein Installer.

+

Abfragesprache

Jedes Feld und jeder Wert, nach dem Sie suchen können.

+

CLI-Referenz

Jeder Schalter und jeder Exit-Code.

+

Snapshots und Drift

Was sich seit gestern auf diesem Rechner geändert hat.

+

Fragen und Grenzen

Auch das, was das Werkzeug absichtlich verweigert.

+

Der Quelltext

Alles liegt auf GitHub unter der GPL-3.0.

+
+
+
diff --git a/site/pages/404/page.json b/site/pages/404/page.json index bbc3b252..86f7d07e 100644 --- a/site/pages/404/page.json +++ b/site/pages/404/page.json @@ -5,6 +5,7 @@ "nav": false, "slug": { "en": "404", - "pl": "404" + "pl": "404", + "de": "404" } } diff --git a/site/pages/audit-windows-services/de.html b/site/pages/audit-windows-services/de.html new file mode 100644 index 00000000..b192cd80 --- /dev/null +++ b/site/pages/audit-windows-services/de.html @@ -0,0 +1,65 @@ + + + + + + +
+
+ Leitfaden +

Windows-Dienste auditieren

+

Ein Audit ist keine Liste dessen, was auf dem Rechner ist. Es ist der Unterschied zwischen dem, was auf dem Rechner ist, und dem, was sein sollte - und kein gewöhnliches Windows hält die zweite Hälfte fest.

+
+
+ +
+
+

Drei Fragen und was sie beantwortet

+
+
+

Was hat sich geändert, seit dieser Rechner gebaut wurde?

+

Ein Snapshot bei der Bereitstellung und ein Vergleich mit dem Rechner heute Nacht. Die Konfiguration wird getrennt von dem gemeldet, was nur gestartet oder angehalten wurde, sodass der eine Starttyp, den jemand geändert hat, nicht unter vierzig Diensten untergeht, die zufällig laufen.

+

bws snapshot diff baseline.json --live

+
+
+

Warum unterscheidet sich Staging vom Produktivsystem?

+

Machen Sie auf jedem einen Snapshot und vergleichen Sie die beiden Dateien - irgendwo, ohne dass einer der Rechner vor Ort ist. Die Dateien tragen den Rechnernamen und das Konto, das sie erstellt hat.

+

bws snapshot diff staging.json production.json

+
+
+

Was ist hier, das nicht hier sein sollte?

+

Abfragen, die die Formen finden, die einen Blick wert sind: ein Dienst, dessen Programmdatei fehlt, einer, der nicht signiert ist, einer, der läuft, obwohl er deaktiviert ist, einer, der Debugrechte verlangt.

+

file:missing, signed:no, mismatch:running

+
+
+
+
+ +
+
+

Die nächtliche Form

+
# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - keine Konfigurationsdrift
+#   5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+#   3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+

Exit-Code 5 macht daraus ein Audit statt eines Berichts, den niemand liest: Die Aufgabe schweigt, bis der Rechner abdriftet, und in der Nacht, in der er es tut, wird jemand alarmiert.

+

Erstellen Sie die Baseline in einer Sitzung mit erhöhten Rechten. Ohne Administratorrechte listet der Manager weniger Einträge und lehnt mehr von dem ab, was er listet. Der Snapshot hält fest, ob das Konto, das ihn erstellt hat, ein Administrator war, sodass der Vergleich das sagen kann, statt Einträge als entfernt zu melden, die niemand entfernt hat - aber eine Baseline, der die Hälfte des Rechners fehlt, ist trotzdem eine Baseline, der die Hälfte des Rechners fehlt.

+
+
+ +
+
+

Was ein Snapshot als Beleg wert ist

+
    +
  • Er ist JSON mit einem Feld pro Zeile, sodass er in ein Repository passt und git diff ihn liest. Ein Prüfer, der dieses Werkzeug nicht hat, kann die Datei trotzdem lesen, und eine Versionsverwaltung beantwortet das Wann bereits.
  • +
  • Er enthält, was das Snap-in nie zeigte: Startpfad und Argumente, Hash und Signierer der Datei, die Abhängigkeiten in beide Richtungen, die Trigger, die erforderlichen Privilegien, den SID-Typ und den Sicherheitsdeskriptor.
  • +
  • Er sagt, was er nicht lesen konnte. Ein Feld, für das diese Sitzung keine Rechte hatte, wird als nicht gelesen festgehalten - nie als leer -, sodass ein späterer Vergleich not compared sagen kann, statt es stillschweigend unverändert zu nennen.
  • +
  • Er ist eine Beschreibung des ganzen Rechners. Legen Sie ihn entsprechend ab: Er wird mit den Berechtigungen geschrieben, die sein Verzeichnis ohnehin hat, und das Werkzeug schränkt nichts ein.
  • +
+ Wie Snapshots und Vergleiche funktionieren +
+
diff --git a/site/pages/audit-windows-services/page.json b/site/pages/audit-windows-services/page.json index 62fadf16..8ef81e11 100644 --- a/site/pages/audit-windows-services/page.json +++ b/site/pages/audit-windows-services/page.json @@ -6,6 +6,7 @@ "footer": "guides", "slug": { "en": "audit-windows-services", - "pl": "audyt-uslug-windows" + "pl": "audyt-uslug-windows", + "de": "windows-dienste-auditieren" } } diff --git a/site/pages/cli-reference/de.html b/site/pages/cli-reference/de.html new file mode 100644 index 00000000..029e4b2f --- /dev/null +++ b/site/pages/cli-reference/de.html @@ -0,0 +1,194 @@ + + + + + + + +
+
+ Referenz +

Referenz der Befehlszeile

+

Jeder Befehl, jeder Schalter und jeder Exit-Code von bws, Version {{version}}. bws --help ist die maßgebliche Quelle und ist länger - diese Seite zeigt dieselbe Oberfläche, so angeordnet, dass man sie lesen kann.

+
+
+ +
+
+

Die Befehle

+

Elf Befehle. snapshot ist ein Substantiv und nimmt ein Wort danach. tool ist ebenfalls ein Substantiv und listet für sich allein die Tools auf.

+
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
+bws show NAME [--full] [--follow-network] [--json] [--timing]
+bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
+bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
+bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
+bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
+bws history [NAME] [--json] [--timing]
+bws tool
+bws tool fix
+bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
+bws license [--components]
+bws --help
+bws --version
+

Bei einem falsch geschriebenen Befehl wird der angeboten, den Sie wahrscheinlich meinten, und der Lauf endet mit Code 2, statt etwas Ähnliches zu tun, als Sie verlangt haben.

+
$ bws lst
+There is no command lst. Did you mean list?
+
+
+ +
+
+

Was jeder Befehl tut

+
+
+

list und show

+

list ist der ganze Rechner, eingegrenzt durch --query. show ist ein Eintrag mit allem, was darüber bekannt ist - Signatur, Privilegien, Sicherheitsdeskriptor und Speicher, alles bei jedem Aufruf gelesen, weil das bei einem einzelnen Eintrag etwa sechzig Millisekunden kostet, über den ganzen Rechner dagegen eine Sekunde. Felder, die wirklich leer sind, werden weggelassen, es sei denn, Sie übergeben --full. Ein Feld, das niemand lesen konnte, wird in jedem Fall ausgegeben, weil es wegzulassen wie eine Antwort aussähe.

+
+
+

stop, start und restart

+

Jeder baut einen Plan und führt ihn aus. --dry-run gibt den Plan aus und ändert nichts, --dependents nimmt die Dienste, die ausfallen würden, als eigene Schritte hinein, und --timeout sagt, wie lange ein Schritt ohne Fortschritt dauern darf. Treiber werden abgelehnt und nicht versucht, weil das Beenden eines Kerneltreibers ohne Neustart oft nicht umkehrbar ist.

+
+
+

kill - für einen Dienst, der sich nicht beenden lässt

+

Es bittet den Dienst, sich zu beenden, und beendet den Prozess dahinter nur, wenn das nicht klappt, sodass ein Eintrag, der von selbst anhält, nie beendet wird. Das Beenden eines Prozesses reißt jeden anderen Dienst, der in diesem Prozess lebt, mit, ob er zuvor angehalten hat oder nicht, und die Vorschau nennt sie und nennt den Prozess mit seiner Nummer. --force überspringt den höflichen Schritt, und die Vorschau zeigt dann einen Schritt statt zwei. --restart bringt danach alles zurück.

+

Windows schreibt diese Idee anders. --force bei Stop-Service bedeutet "auch wenn etwas davon abhängt", was hier --dependents tut. Deshalb ist dies ein eigener Befehl und kein Schalter bei stop.

+
+
+

start-type - eine Einstellung, kein Zug

+

Er sagt, was der Manager beim nächsten Start mit einem Eintrag tut, und ohne --stop bewegt er nichts: Ein Eintrag, der läuft, läuft weiter, einer, der angehalten ist, bleibt angehalten, und der Plan sagt das. disabled verdient ein Innehalten, weil es den Manager daran hindert, den Eintrag überhaupt zu starten, auch auf Anforderung für etwas anderes, das ihn braucht. delayed ist automatisch, etwas nach den anderen automatischen Einträgen gestartet - das Wort, nach dem start:delayed in einer Abfrage fragt - und Windows lehnt es für einen Eintrag in einer Ladereihenfolgegruppe ab, was der Plan sagt, bevor etwas geschieht. Jeder der vier schreibt, ob der Eintrag verzögert startet, wie es sc.exe tut. --stop, nur neben disabled, hält den Eintrag im selben Plan an, sobald die Einstellung geschrieben ist.

+
+
+

snapshot create und snapshot diff

+

create liest immer Signaturen und Hashes, weil ein Snapshot aufbewahrt und später verglichen wird und einer ohne sie gegen einen mit ihnen so verglichen würde, als hätte sich der Rechner verändert. diff sagt, was sich beim Übergang von der ersten Datei zur zweiten geändert hat, oder mit --live von einer Datei zu diesem Rechner. Die Snapshot-Seite hat das Format und die Begründung.

+
+
+

history - wer es geändert hat, aus dem Systemprotokoll

+

Änderungen des Starttyps und Installationen aus dem Systemprotokoll, die neuesten zuerst, mit dem Konto, das Windows festgehalten hat. Die erste Zeile sagt, wie weit das Protokoll zurückreicht und ob es gelöscht wurde, denn ein Verlauf ist nur so lang wie das Protokoll. Mit einem Namen sind es die Änderungen des Starttyps dieses Dienstes - Installationen werden nur ohne Namen aufgelistet, weil Windows eine Installation unter dem Anzeigenamen und nie unter dem Dienstnamen festhält. Ein Konto wird genannt, wo dieser Rechner es selbst benennen kann, und sonst als seine SID gezeigt, und Starttypen erscheinen in den Worten, die Windows geschrieben hat.

+
+
+

tool - fertige Antworten auf häufige Probleme

+

Dieselben Tools, die das Fenster auf seinem Reiter Tools zeigt. bws tool listet sie auf, und bws tool fix listet die Schnellreparaturen auf: printer, sound, indexing und search, jeweils ein Neustart eines Windows-Dienstes samt dem, was davon abhängt, ausgewählt, weil die Fehlerbehebungsseiten von Microsoft selbst ihn vorschlagen. bws tool fix printer ist genau bws restart Spooler --dependents - derselbe Plan, dieselbe Ausgabe und dieselben Exit-Codes - und wie jeder Befehl hier, der etwas ändert, fragt es nicht vorher, daher ist --dry-run der Weg, vor der Ausführung nachzusehen.

+
+
+

license - was in der heruntergeladenen Datei steckt

+

Es liest überhaupt nichts - keinen Dienstmanager, keinen Datenträger, kein Netzwerk - und antwortet aus einem Register, das in die ausführbare Datei einkompiliert ist. --components macht aus dem Hinweis jede Komponente mit Version, Lizenz und Herkunft. Dieselbe Menge, die die neben dem Download veröffentlichte Stückliste trägt, weil beide aus einem Register erzeugt werden, und der Grund, warum sich das lohnt: Das Programm ist eine eigenständige Datei, daneben gibt es also nichts, was ein Scanner lesen könnte.

+
+
+
+
+ +
+
+

Beispiele

+

Die folgenden Pläne wurden mit --dry-run gegen das Programm geprüft, das diese Seite beschreibt. Ein Befehl, der etwas ändert, fragt nicht vorher, daher ist --dry-run der Weg, vor der Ausführung nachzusehen. Spooler steht für irgendeinen Dienst - setzen Sie den Namen Ihres eigenen ein.

+
+

Finden und lesen

+
bws list                                       jeder Dienst und Treiber auf diesem Rechner
+bws list --query "start:auto !status:running"  was laufen sollte und nicht läuft
+bws list --query "status:running" --memory     was der Prozess jedes laufenden Eintrags verbraucht
+bws show Spooler                               alles, was über einen Eintrag bekannt ist
+bws show Spooler --full                        auch die Felder, die wirklich leer sind
+

Erst ansehen, dann ändern

+
bws restart Spooler --dry-run                der Plan und sonst nichts
+bws restart Spooler --dependents             zusammen mit dem neu starten, was davon abhängt
+bws stop Spooler --dependents --timeout 120  zwei Minuten pro Schritt ohne Fortschritt erlauben
+bws start-type WSearch delayed --dry-run     etwas nach den anderen automatischen Einträgen starten
+bws start-type Spooler disabled --stop       deaktivieren und in einem Plan anhalten
+

Ein Dienst, der sich nicht beenden lässt

+
bws kill Spooler --dry-run          der Prozess und jeder Dienst, der in ihm lebt
+bws kill Spooler --restart          den Prozess nur beenden, wenn ein Stopp scheitert, dann alles zurückbringen
+bws kill Spooler --force --dry-run  ein Schritt statt zwei: der Prozess sofort beendet
+

Snapshots und Drift

+
bws snapshot create before.json --note "before the patch"  den Rechner einfrieren, mit einer Notiz in der Datei
+bws snapshot diff before.json after.json                   zwei Dateien - zwei Tage oder zwei Rechner
+bws snapshot diff before.json --live                       die Datei gegen diesen Rechner, wie er jetzt ist
+bws snapshot diff before.json --live --exit-code           dasselbe, endet mit 5, wenn die Konfiguration abgedriftet ist
+

Wer es geändert hat

+
bws history          jede Änderung des Starttyps und jede Installation, die das Systemprotokoll enthält
+bws history Spooler  die Änderungen des Starttyps eines Dienstes
+bws history --json   dasselbe als Dokument, mit Protokoll und Änderungen
+

Schnellreparaturen

+
bws tool                      die vorhandenen Tools
+bws tool fix                  die Schnellreparaturen und der Dienst hinter jeder
+bws tool fix sound --dry-run  der Plan für den Neustart der beiden Audiodienste
+bws tool fix printer          den Druckerspooler samt dem, was davon abhängt, neu starten
+

Was in der Datei steckt

+
bws license --components  jede Komponente, ihre Version, ihre Lizenz und ihre Herkunft
+bws --version             die Version dieser ausführbaren Datei
+

In einem PowerShell-Skript

+
# die Einträge, die laufen sollten und nicht laufen, als Objekte
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# die unsignierten Dateien, in eine Tabelle
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# was ein Dienst braucht
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# eine nächtliche Prüfung, die nach dem Exit-Code verzweigt
+bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
+switch ($LASTEXITCODE) {
+  0 { 'no configuration drift' }
+  5 { 'the configuration drifted' }
+  default { "no clean answer, exit code $LASTEXITCODE" }
+}
+

In cmd und einer Batchdatei

+
rem ein zweiter Befehl nur, wenn der erste nicht sauber endete
+bws restart Spooler || echo the restart did not end cleanly
+
+rem in einer Batchdatei mit eingeschalteter verzögerter Erweiterung braucht das ! einen Zirkumflex
+bws list --query "start:auto ^!status:running"
+
+
+
+ +
+
+

Schalter

+

{{switch_count}} davon. Die dritte Spalte nennt die Befehle, zu denen jeder gehört - ein Schalter, der an einen Befehl übergeben wird, der damit nichts anfangen kann, ist ein Fehler mit dieser Liste darin, statt einer stillschweigend ignorierten Option.

+ {{table:switches}} +
+
+ +
+
+

Exit-Codes

+

{{exit_code_count}} Enden, und jedes davon ist für ein Skript etwas anderes zu tun. Daten gehen auf die Standardausgabe und alles andere auf die Standardfehlerausgabe, sodass bws list --json | jq funktioniert und eine Warnung nie in Ihrem JSON landet.

+

Jedes JSON-Dokument ist reines ASCII: Ein Buchstabe außerhalb davon wird als sechszeichige Escape-Sequenz geschrieben, die jeder JSON-Leser wieder in den Buchstaben zurückverwandelt, sodass bws list --json > file.json gültiges UTF-8 ist und | ConvertFrom-Json es richtig liest, welche Codepage die Konsole auch hat. Im Text, den ein Mensch liest, wird ein Zeichen, das das Terminal bewegen statt etwas drucken würde - ein Tabulator, ein Zeilenumbruch, eine Escape-Sequenz, eine Richtungsüberschreibung - als sein Codepunkt gezeigt, <U+001B>.

+

-- beendet die Schalter, sodass auch ein Dienst, dessen Name mit einem Bindestrich beginnt, benannt werden kann: bws show -- -odd. Die Befehlszeilen, die Ihnen das Werkzeug reicht, sind für PowerShell geschrieben: Ein Name mit Leerzeichen kommt in doppelte Anführungszeichen, die cmd genauso liest, und ein Name, den PowerShell darin erweitern würde, wie MSSQL$SQLEXPRESS, kommt in einfache Anführungszeichen.

+ {{table:exit-codes}} +

Strg+C hat drei Stufen, und jede sagt, was die nächste kostet. Die erste hört auf, vorwärts zu gehen, und stellt trotzdem wieder her, was genommen wurde, die zweite lässt die Dinge, wie sie sind, und gibt trotzdem den Bericht aus, die dritte beendet den Prozess. Ein von Hand gestoppter Lauf endet mit 4, auch wenn jeder Schritt noch ankam.

+

Das Schließen des Konsolenfensters zählt als erstes Strg+C. Windows gibt einem Programm danach fünf Sekunden, und in ihnen hört dieses auf, vorwärts zu gehen, und stellt wieder her, was es heruntergefahren hat. Abmelden und Herunterfahren beenden es ohne jede Warnung, auf die es reagieren könnte, und eine abgebrochene Remotesitzung kann das auch.

+
+
+ +
+
+

In einer geplanten Aufgabe

+

Die Form, für die dieses Werkzeug gebaut wurde: den Rechner einfrieren, wenn er als gut bekannt ist, und dann jede Nacht fragen, ob er es noch ist.

+
# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - keine Konfigurationsdrift
+#   5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+#   3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+

Das Fenster ist die andere Hälfte derselben Engine: {{archive_window}} enthält es, und die Download-Seite sagt, was jedes Archiv ist.

+
+
+ +
+
+

Das Argument des Fensters

+

BetterWindowsServices.exe nimmt ein Argument, das für einen Menschen gedacht ist: --catalogue öffnet ein Entwicklerblatt, das jede Komponente des Fensters in jedem Zustand zeigt und nichts von Ihrem Rechner liest. Ein zweites, --carry, ist die Art, wie ein Fenster das, was es zeigte, an die Kopie von sich übergibt, als die es sich als Administrator neu startet. Niemand tippt es, und alles darin, was dieses Fenster nicht hätte schreiben können, wird abgelehnt.

+
+
diff --git a/site/pages/cli-reference/page.json b/site/pages/cli-reference/page.json index 1276ced7..22bb885d 100644 --- a/site/pages/cli-reference/page.json +++ b/site/pages/cli-reference/page.json @@ -6,6 +6,7 @@ "footer": "product", "slug": { "en": "cli-reference", - "pl": "dokumentacja-cli" + "pl": "dokumentacja-cli", + "de": "cli-referenz" } } diff --git a/site/pages/download/de.html b/site/pages/download/de.html new file mode 100644 index 00000000..aaccf6f0 --- /dev/null +++ b/site/pages/download/de.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Download +

Entpacken und starten oder installieren

+

Version {{version}}. Die Archive brauchen keinen Installer und schreiben nichts in die Registrierung, und zum Ansehen sind keine Administratorrechte nötig. Ein signierter Installer bringt stattdessen beide Programme auf den ganzen Rechner. Kostenlos und quelloffen unter der GPL-3.0.

+ +
+
+ +
+
+

Was im Release steckt

+
+ + + + + + + +
DateiWas es ist
{{archive_window}}Das Fenster: BetterWindowsServices.exe, eine eigenständige ausführbare Datei mit eigener .NET-Laufzeit im Inneren
{{archive_cli}}Die Befehlszeile: bws.exe, eine eigenständige ausführbare Datei, für Skripte, geplante Aufgaben und CI
{{archive_installer}}Der Installer: beide Programme in Program Files für jedes Konto auf dem Rechner, das Fenster im Startmenü und bws im PATH des Rechners
+
+

Nehmen Sie eines oder beide - es sind zwei Clients derselben Engine, und keiner braucht den anderen. Auf einem Server ist die Befehlszeile die kleinere der beiden und kann alles, was das Fenster kann.

+

Der Installer enthält genau das, was die beiden Archive enthalten. Er installiert sich still mit msiexec /i {{archive_installer}} /qn, eine neuere Version wird über eine ältere installiert, und er beendet nichts, was läuft - schließen Sie also vor dem Upgrade das Fenster und jedes laufende bws, denn eine weiterlaufende Kopie kann mit einem Fehler anhalten. Die Deinstallation über Einstellungen, Apps entfernt die Programme, den Startmenüeintrag und den PATH-Eintrag und lässt Ihre eigenen Dateien in Ruhe.

+

Die ausführbaren Dateien tragen eine Authenticode-Signatur, sodass Windows den Herausgeber nennt, statt vor einem unbekannten zu warnen.

+
+
+ +
+
+

Voraussetzungen

+
    +
  • Windows 10 Version 1809 oder neuer, oder Windows Server 2019 oder neuer. Nur 64 Bit - ein 32-Bit-Prozess liest umgeleitete Pfade und Registrierungsschlüssel, was stillschweigend falsche Antworten ergäbe.
  • +
  • Kein .NET zu installieren. Beide ausführbaren Dateien bringen ihre eigene .NET-Laufzeit mit.
  • +
  • Administratorrechte, um irgendetwas zu ändern. Lesen, Suchen, Snapshots und Vergleiche funktionieren auch ohne, mit weniger sichtbaren Einträgen, und das Werkzeug sagt das ganz oben, statt so zu tun, als wäre die Liste der ganze Rechner.
  • +
+

Das Fenster hält eine eigene Datei - das Layout, in dem Sie die Liste verlassen haben - unter %APPDATA%\BetterWindowsServices. Ein Snapshot landet dort, wo Sie es bws snapshot create sagen, und im aktuellen Verzeichnis, wenn Sie nichts sagen.

+

Das Programm spricht Englisch. Das Fenster liest eine Sprachdatei, languages\gui.<Code>.json, die daneben liegt und nach der Sprache von Windows gewählt wird, ohne Schalter. Eine Übersetzung ist daher ein Beitrag, der sich ohne Neubau ergänzen lässt - CONTRIBUTING.md sagt, wie.

+
+
+ +
+
+

Virenschutz und EDR

+

Dieses Werkzeug tut, was ein Administrator mit Diensten tut, und einiges davon ist das, worauf Sicherheitssoftware achtet.

+

Es beendet und startet Dienste, es kann den Prozess hinter einem Dienst beenden, und es liest von jedem Dienst den Sicherheitsdeskriptor und die erforderlichen Privilegien. Ein EDR, der einen Prozess meldet, der svchost.exe beendet, macht seine Arbeit, und ein erzwungenes Beenden hier kann genau so aussehen.

+

Was es nicht tut, damit Sie die Aussage prüfen können: Es schleust nichts in einen Prozess ein, es packt oder verschleiert nichts, es installiert keinen Dienst und keinen Treiber und lässt nichts laufen, und es öffnet keine Netzwerkverbindung. Es ist quelloffen unter der GPL-3.0, und Sie können beide ausführbaren Dateien selbst bauen.

+

Wenn Ihre Richtlinie eine Ausnahme braucht, nehmen Sie die beiden ausführbaren Dateien per Datei aus und nicht einen Ordner. Das Einzige, was Sie mit derselben Sorgfalt behandeln sollten wie das Werkzeug selbst, ist eine Snapshot-Datei: Sie beschreibt den ganzen Rechner.

+
+
+ +
+
+

Aus dem Quelltext bauen

+

.NET-10-SDK, unter Windows.

+
git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+

Einige Tests lesen den echten Dienststeuerungs-Manager des Rechners, auf dem sie laufen, und vergleichen, was dieses Werkzeug sagt, mit dem, was sc.exe sagt. Sie sind schreibgeschützt. Die Einzeldatei-Programme, die die Releases enthalten, sind diese beiden Veröffentlichungen, jeweils eine Datei mit der Laufzeit im Inneren:

+
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+

Sie landen als bws.exe und BetterWindowsServices.exe unter bin/Release/.../win-x64/publish/ des jeweiligen Projekts. Die .pdb-Dateien daneben sind Debugsymbole, und zum Ausführen braucht sie nichts.

+
+
+ +
+
+

Was der Betrieb kostet

+

Gemessen auf einem Rechner mit 810 Diensten. Ihre Werte werden abweichen - Anzahl der Dienste, Datenträger und Prozessor verschieben sie alle.

+
+

Etwa eine Viertelsekunde

braucht bws list, um den ganzen Rechner zu lesen.

+

Etwa acht Zehntelsekunden

vom Start des Fensters, bis die Liste auf dem Bildschirm steht.

+

Etwa 100 MB

für das Fenster - die Hälfte davon das Windows-Framework für die Oberfläche, noch bevor irgendein eigener Code dieses Werkzeugs läuft.

+

Etwa 16 MB

für die Befehlszeile auf demselben Rechner.

+
+
+
diff --git a/site/pages/download/page.json b/site/pages/download/page.json index 122b8ff8..3df4f679 100644 --- a/site/pages/download/page.json +++ b/site/pages/download/page.json @@ -6,6 +6,7 @@ "footer": "product", "slug": { "en": "download", - "pl": "pobieranie" + "pl": "pobieranie", + "de": "download" } } diff --git a/site/pages/faq/de.html b/site/pages/faq/de.html new file mode 100644 index 00000000..dc87422f --- /dev/null +++ b/site/pages/faq/de.html @@ -0,0 +1,78 @@ + + + + + +
+
+ Fragen +

Fragen und Grenzen

+

Ein Werkzeug, das etwas stillschweigend nicht abdeckt, ist schlechter als eines, das sagt, was es nicht kann. Auch die Grenzen stehen auf dieser Seite, in zwei Gruppen: was es absichtlich verweigert und was Windows tut und dieses Werkzeug so meldet, wie es ist.

+
+
+ +
+
+
+
+

Was unterscheidet das von sc.exe, Get-Service oder services.msc?

+

sc query und Get-Service sagen, was läuft. services.msc lässt Sie es ändern, Zeile für Zeile, ohne Möglichkeit, eine Frage zu stellen, und ohne Aufzeichnung danach. Dieses Werkzeug stellt die Frage (start:auto !status:running), zeigt den Plan, bevor es handelt, und hält einen Snapshot bereit, den Sie eine Woche später vergleichen können. Wo es bei einem Dienst von sc.exe abweicht, ist das ein Fehler - ein Teil der Testsuite führt beide aus und vergleicht sie Eintrag für Eintrag. Der längere Vergleich steht hier.

+
+
+

Braucht es das Internet?

+

Nie. Keine Telemetrie, keine Updateprüfung, keine Absturzberichte, kein Konto, kein Client von irgendetwas. Das einzige Mal, dass es überhaupt ein Netzwerk berühren kann, ist, wenn Sie --follow-network übergeben: Dann darf es einen Startpfad auf der Freigabe eines anderen Rechners ansehen und Windows ein Zertifikat holen lassen, das dieser Rechner noch nicht hat - standardmäßig aus, und die Hilfe sagt, warum. Die Schaltflächen GitHub und Donate im Fenster und die Seite in seinem Menü Help geben beim Drücken jeweils eine feste Adresse an Ihren Browser weiter, und Ihr Browser ist es, der sich verbindet.

+
+
+

Braucht es Administratorrechte?

+

Zum Ansehen nein. Zum Ändern ja. Ohne sie zeigt der Manager weniger Einträge und lehnt mehr ab, und beide Hälften sagen das ganz oben, statt so zu tun, als wäre die Liste der ganze Rechner. Das Fenster bietet Restart as admin an. Es erhöht seine Rechte nie selbst.

+
+
+

Ist es kostenlos? Darf ich es bei der Arbeit nutzen?

+

Ja, beides. GPL-3.0, ohne Bedingungen. Ein Snapshot, den Sie erstellen, ist Ihre Datei.

+
+
+

Macht es meinen Server kaputt?

+

Nicht von selbst. Nichts wird ohne einen Plan geändert, den Sie gesehen haben, Treiber werden abgelehnt, und ein Plan, der etwas stilllegen würde, das der Rechner braucht, sagt das. Wovor es Sie nicht schützen kann, ist, einen Plan auszuführen, den Sie nicht gelesen haben. Die Liste der Dienste, die der Rechner braucht, ist eine Startliste mit sieben Einträgen - die beiden Hälften von RPC und der DCOM-Starter, der Kontenmanager, die Schlüsselisolierung, der Sitzungsmanager und Plug and Play - und Remotedesktop steht nicht darauf, lesen Sie also in einer Remotesitzung den Plan.

+
+
+

Ist das ein Microsoft-Produkt?

+

Nein. {{product}} ist ein unabhängiges Open-Source-Projekt und steht in keiner Verbindung zu Microsoft, wird nicht von Microsoft unterstützt und nicht von Microsoft gesponsert. Windows ist eine Marke der Microsoft-Unternehmensgruppe.

+
+
+

Gibt es das Programm in meiner Sprache?

+

Nein - das Programm spricht Englisch, und deshalb ist diese Seite übersetzt. Das Fenster liest eine Sprachdatei, languages\gui.<Code>.json, die neben der ausführbaren Datei liegt, und wählt sie nach der Sprache von Windows, ohne Schalter, sodass eine Übersetzung ein Beitrag ist, der sich ohne Neubau des Programms ergänzen lässt. Die Namen der Dienste in der Liste sind das, was Ihr Windows dazu sagt - in der Sprache, in der Ihr Windows eingerichtet ist.

+
+
+

Warum ist das Fenster dunkel, wenn mein Windows hell ist?

+

Es ist dunkel und bleibt dunkel, was auch immer in Windows eingestellt ist, auch bei einem Kontrastdesign. Das ist geprüft und nicht angenommen - es behält seine eigenen Farben und bleibt lesbar, und es folgt dieser Einstellung nicht.

+
+
+
+
+ +
+
+

Absichtlich so

+
    +
  • Nur der lokale Rechner. Fernverwaltung gibt es in dieser Version nicht. Um zwei Rechner zu vergleichen, machen Sie auf jedem einen Snapshot und vergleichen die beiden Dateien.
  • +
  • Nur Windows, nur 64 Bit, Windows 10 1809 oder Windows Server 2019 und neuer.
  • +
  • Operationen an Treibern werden abgelehnt und nicht versucht, weil das Beenden eines Kerneltreibers ohne Neustart oft nicht umkehrbar ist.
  • +
  • Das Werkzeug erhöht seine eigenen Rechte nicht. Wenn der Manager ablehnt, sagt es das und endet mit Exit-Code 3. Das Fenster bietet an, sich selbst als Administrator neu zu starten, und tut sonst nichts dazu.
  • +
  • Die Sperrung von Zertifikaten wird nicht geprüft. Dafür müsste es das Netzwerk erreichen, und dieses Werkzeug tut das nie. Trusted heißt also, dass die Kette auf diesem Rechner gültig war, nicht, dass niemand das Zertifikat seither widerrufen hat.
  • +
  • Das Fenster entpackt vor dem Start einen Teil des Windows-Frameworks für die Oberfläche. Als einzelne Datei trägt es einige native Bibliotheken, die Windows nur von der Festplatte laden kann. Ohne Administratorrechte schreibt es sie beim ersten Start jeder Version in einen .net-Ordner unter dem temporären Ordner des Kontos und lädt sie von dort. Mit Administratorrechten nutzt es stattdessen ProgramData\BetterWindowsServices auf dem Windows-Laufwerk - einen Ordner, den es so anlegt, dass nur Administratoren ihn ändern können, und bei jedem Start prüft. Kann dieser Ordner nicht angelegt werden oder können andere ihn ändern, startet das Fenster nicht und sagt, welcher Ordner und was zu tun ist. Der Umzug dorthin bedeutet, dass sich ein Fenster mit erhöhten Rechten ein zweites Mal selbst startet, was den Bruchteil einer Sekunde dauert, und jede Version lässt ihre Bibliotheken dort liegen (etwa 8 MB), bis jemand den Ordner löscht. Die Befehlszeile trägt keine solchen Bibliotheken und entpackt nichts.
  • +
  • Eine Sitzung mit erhöhten Rechten nennt die .NET-Einstellungen, die sie erbt, statt sie abzulehnen. Ein Profiler, ein Trace- oder Dump-Schalter oder ein Diagnoseport in der Umgebung lässt sich aus einem .NET-Programm heraus nicht abschalten, daher listen beide Hälften mit Administratorrechten alle auf, die sie finden. Startup-Hooks werden ganz abgeschaltet.
  • +
+
+
+ +
+
+

Was Windows tut und dieses Werkzeug so meldet, wie es ist

+
    +
  • Ein Dienst, der in svchost gehostet wird, hat einen Startpfad, der den Host nennt, sodass die Datei ist da und wer sie signiert hat beide weniger aussagen als bei einem Dienst mit eigenem Prozess.
  • +
  • Eine Datei mit eigener Signatur und einem Windows-Katalogeintrag kann zwei verschiedene Signierer nennen. Der angezeigte Herausgeber ist der in der Datei - der, der gleich bleibt, wenn man die Datei auf einem anderen Rechner ansieht - und er kann von dem abweichen, was PowerShell meldet.
  • +
  • Ohne Administratorrechte listet der Manager weniger Einträge und lehnt mehr von dem ab, was er listet. Beide Hälften sagen das ganz oben, und ein Snapshot hält es fest, denn ein Vergleich eines Snapshots mit erhöhten Rechten mit einem ohne Rechte würde sonst Einträge als entfernt melden, die niemand entfernt hat.
  • +
+

Ein Problem gefunden oder einen Dienst, den dieses Werkzeug anders meldet als sc.exe? Der Issue-Tracker ist offen, und ein Vergleich der beiden ist das Nützlichste, was Sie dort einfügen können.

+
+
diff --git a/site/pages/faq/page.json b/site/pages/faq/page.json index 2889e2d2..b80b4b25 100644 --- a/site/pages/faq/page.json +++ b/site/pages/faq/page.json @@ -7,6 +7,7 @@ "schema": "faq", "slug": { "en": "faq", - "pl": "faq" + "pl": "faq", + "de": "faq" } } diff --git a/site/pages/home/de.html b/site/pages/home/de.html new file mode 100644 index 00000000..14f3d70b --- /dev/null +++ b/site/pages/home/de.html @@ -0,0 +1,201 @@ + + + + + + + +
+
+
+

Windows-Dienste durchsuchen, jede Änderung vorab ansehen und sehen, was seit gestern abgedriftet ist

+

{{product}} ist services.msc, neu gebaut für alle, die Windows-Rechner administrieren - ein Fenster und eine Befehlszeile über einer gemeinsamen Engine. Stellen Sie dem Rechner eine Frage, statt achthundert Zeilen zu durchblättern. Sehen Sie, was eine Änderung bewirkt, bevor Sie irgendetwas bestätigen. Und das, was services.msc nie hatte: jeden Dienst in eine Datei einfrieren und eine Woche später fragen, was sich geändert hat.

+ +
    +
  • Kostenlos und quelloffen, GPL-3.0
  • +
  • Eine Datei oder ein Installer
  • +
  • Zum Ansehen keine Administratorrechte
  • +
  • Kein Kontakt zum Internet
  • +
+
+
+ Das Fenster mit fünf ausgewählten Einträgen und dem Plan zu ihrem Start über der Liste: fünf Schritte, ein Hinweis, dass zwei davon bereits in diesem Zustand sind, eine bws-start-Zeile für jeden Eintrag und die Schaltfläche Start 5 entries. +
Ausgewählte Einträge, ein Plan, der vor jeder Änderung angezeigt wird, und die bws-Zeile, die genau dasselbe verlangt. Das Programm spricht Englisch - das Fenster liest eine Sprachdatei, die daneben liegt, sodass eine Übersetzung ohne Neubau möglich ist.
+
+
+
+ + +
+
+ Eine halbe Minute damit +

So sieht es im Einsatz aus

+

Eine echte Sitzung auf einem auf Polnisch installierten Windows - die Anzeigenamen kommen von Windows, deshalb stehen sie in dessen Sprache. Das Fenster selbst spricht Englisch.

+
+ Vier ausgewählte Einträge und der Plan zu ihrem Start, ein erzwungener Neustart des Local Session Manager, dessen Plan warnt, dass der Rechner ohne ihn nicht funktioniert, und vor dem die Schaltfläche erst nach Eingabe seines Namens arbeitet, die Fragen zum Einstieg unter dem leeren Suchfeld sowie der Druckerspooler, der durch Eintippen eines Teils seines Namens gefunden und gestartet wird. +
Vier ausgewählte Einträge und der Plan zu ihrem Start, ein erzwungener Neustart, der den Namen eines Dienstes verlangt, den der Rechner braucht, die Fragen unter einem leeren Suchfeld und der Druckerspooler, der durch Eintippen gefunden und gestartet wird.
+
+
+
+ Der Startbildschirm: drei Karten mit Zahlen zu diesem Rechner - laufende Dienste, automatisch startende Dienste, die nicht hochgekommen sind, und automatisch startende Dienste, deren Datei fehlt - sowie eine Schaltfläche Show the list. +
Es öffnet sich mit einigen Zahlen zu diesem Rechner. Jede ist eine Frage - ein Klick, und die Frage landet im Suchfeld.
+
+
+ Die Liste der Dienste mit den drei Listen über dem Suchfeld, einem leeren Suchfeld, den in Reihen geöffneten Filterschaltflächen für Zustand, Starttyp, Signatur, Abweichungen und Trigger und der Liste darunter. +
Die Filterschaltflächen schreiben in das Suchfeld, sodass das, worauf Sie geklickt haben, eine Abfrage ist, die Sie lesen und bearbeiten können.
+
+
+
+
+ +
+
+ Warum es das gibt +

services.msc hat sich seit Windows 2000 kaum verändert

+

Administratoren verbringen damit pro Woche Stunden und stoßen immer wieder an dieselben Wände.

+
+
    +
  • Keine Suche. Navigiert wird nur durch den Sprung zum ersten Buchstaben eines Anzeigenamens.
  • +
  • Kein Filtern. Es gibt keine Möglichkeit zu fragen: Zeige mir, was automatisch starten soll und nicht läuft.
  • +
  • Eine Zeile nach der anderen. Zwölf Dienste neu zu starten heißt zwölf Rechtsklicks und zwölf Wartezeiten.
  • +
  • "Wird beendet..." für immer, und der einzige Ausweg ist der Task-Manager samt Raten, welcher Prozess es ist.
  • +
  • Kein Verlauf. Niemand weiß, wer diesen Starttyp auf Deaktiviert gesetzt hat und wann.
  • +
  • Verborgene Daten. Prozess, Trigger, Privilegien, Sicherheitsdeskriptor, wer die Programmdatei signiert hat - für alles braucht man sc.exe aus dem Kopf oder die Registrierung.
  • +
  • Keine Gleichwertigkeit auf der Befehlszeile. sc.exe hat eine Syntax aus den Neunzigern, und das Get-Service, das mit Windows in Windows PowerShell 5.1 kommt, zeigt weder das Konto, unter dem ein Dienst läuft, noch gar seine Beschreibung. PowerShell 7 zeigt beides und wird separat installiert.
  • +
+
+

Die anderen Werkzeuge lösen jeweils nur einen Teil

+

Process Hacker und System Informer zeigen eine reichhaltige Liste und können einen Prozess hart beenden, haben aber weder Audit noch Befehlszeile. sc.exe und PsService können alles und sagen nichts. Die *-Service-Cmdlets von PowerShell sind skriptfähig und oberflächlich.

+

Niemand verbindet eine durchsuchbare Liste, eine Vorschau vor jeder Änderung und ein Protokoll dessen, was sich im Lauf der Zeit geändert hat - und das Protokoll ist der Grund, dieses Werkzeug nach dem ersten Nachmittag auf einem Rechner zu behalten.

+ Der vollständige Vergleich +
+
+
+
+ +
+
+ Was es kann +

Ein Fenster und eine Befehlszeile über einer gemeinsamen Engine

+
+

Fragen, statt scrollen

start:auto !status:running heißt was laufen sollte und nicht läuft. Eine Sprache, im Suchfeld und in bws list --query, mit den Feldern als Vorschlag während der Eingabe.

+

Den Plan zeigen, bevor etwas passiert

Jedes Beenden, Starten, Neustarten und jede Änderung des Starttyps wird samt den Diensten, die dabei mit heruntergehen, vorab angezeigt, und die Vorschau ist das, was ausgeführt wird.

+

Sagen, was abgedriftet ist und wer es geändert hat

bws snapshot create friert den Rechner in eine Datei ein, und bws snapshot diff sagt, was sich seither geändert hat, die Konfiguration getrennt von dem, was nur gestartet oder beendet wurde. bws history sagt anhand des Systemprotokolls, wer einen Starttyp geändert und wer einen Dienst installiert hat. Das Fenster erledigt alle drei unter Audit....

+

Ein häufiges Problem mit einem Klick beheben

Der Reiter Tools und bws tool fix starten den Dienst hinter einem Drucker, der nicht druckt, einem verschwundenen Ton oder einer hängenden Suche samt allem, was davon abhängt, über denselben Plan wie alles andere neu.

+

Einen Dienst beenden, der sich nicht beenden lässt

Es fragt zuerst höflich und beendet den Prozess nur, wenn das fehlschlägt, und nennt dabei jeden anderen Dienst, der in ihm lebt.

+

Zeigen, was services.msc verbirgt

Wer die Programmdatei signiert hat und ob Windows ihr vertraut, Trigger, Privilegien, den Sicherheitsdeskriptor, den Prozess und seinen Speicher. Als Spalten und als Kriterien für die Suche.

+

Sagen, wenn es etwas nicht lesen konnte

Ein Feld, das es nicht lesen konnte, wird als nicht gelesen gemeldet und nie als leer angezeigt. Ein Snapshot ohne Administratorrechte sagt das in der Datei selbst.

+

In Skripte passen

--json bei jedem Befehl, ein Exit-Code für jedes Ende und 5, wenn ein Vergleich Drift findet.

+

Aus einer Datei laufen, offline

Entpacken und starten oder für den ganzen Rechner installieren. Kein .NET zu installieren, und es nimmt nie Kontakt zum Internet auf. Zum Lesen sind keine Administratorrechte nötig. GPL-3.0.

+
+
+
+ +
+
+ Das, was services.msc nie konnte +

Was sich seit gestern geändert hat

+

Ein Snapshot ist der ganze Rechner in einem Augenblick - jeder Dienst und jeder Treiber mit Starttyp, Konto, Startpfad, Hash und Signierer seiner Datei, Abhängigkeiten, Triggern, Privilegien und Sicherheitsdeskriptor. Er ist JSON mit einem Feld pro Zeile, sodass er in ein Repository passt und git diff ihn lesen kann.

+
+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
    +
  • Konfiguration und Laufzustand werden getrennt gemeldet. Zwei Snapshots im Abstand eines Tages unterscheiden sich darin, was gerade läuft, und fast nichts davon ist Drift - die Zeile mit dem geänderten Starttyp ist die, die man lesen muss.
  • +
  • Was sich nicht vergleichen ließ, wird aufgelistet und nicht versteckt. Ein Feld, das ein Snapshot nie gelesen hat, erscheint als not compared, sodass ein Vergleich, der nichts hat sich geändert sagt, bedeutet: nichts hat sich in dem geändert, was beide Seiten sehen konnten.
  • +
  • --exit-code endet mit 5, wenn sich die Konfiguration unterscheidet, sodass eine geplante Aufgabe bei der Bereitstellung einen Snapshot machen und in der ersten Nacht, in der der Rechner abdriftet, jemanden alarmieren kann.
  • +
  • Zwei Rechner, zwei Dateien. Machen Sie einen Snapshot auf dem Staging- und einen auf dem Produktivsystem und vergleichen Sie sie irgendwo.
  • +
+
+ Wie Snapshots und Drift funktionieren +
+
+ +
+
+ Ohne Plan geschieht nichts +

Die Vorschau ist die Ausführung

+

Jede schreibende Operation baut zuerst einen Plan, und derselbe Plan ist die Vorschau, die Kaskade der abhängigen Dienste, die Ablehnung, bevor Sie etwas bestätigen, die Befehlszeile, die dasselbe verlangt, und der Weg zurück danach.

+
+
$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt  (2 steps)
+  1. stop  vmms      (would break otherwise)
+  2. stop  Winmgmt   (asked for)
+
+Warnings:
+  - Stopping Winmgmt also stops one other entry: vmms
+  - Winmgmt starts automatically, so it will be back after the next restart.
+
    +
  • Führen Sie es ohne --dry-run aus, und das sind die Schritte, in dieser Reihenfolge, mit denselben Gründen daneben. Es gibt keinen zweiten Codepfad für den Ernstfall.
  • +
  • Was mit heruntergeht, steht im Plan. Die Dienste, die ausfallen würden, sind eigene Schritte, und ein Plan, der etwas stilllegen würde, das der Rechner braucht, sagt das in seinen Warnungen.
  • +
  • Eine Ablehnung kommt vor der Schaltfläche. Ein Treiber, ein Dienst, für den der Manager kein Beenden annimmt, ein Prozess, den das System schützt - abgelehnt, wenn der Plan gebaut wird, mit Begründung. Das Fenster graut die Schaltfläche aus und nennt daneben den Grund.
  • +
  • Erzwungenes Beenden hat zwei Schritte, und der zweite ist bedingt. bws kill bittet den Dienst, sich zu beenden, und beendet seinen Prozess nur, wenn das nicht klappt, und nennt dabei jeden anderen Dienst, der in ihm lebt.
  • +
+
+ Wenn sich ein Dienst nicht beenden lässt +
+
+ +
+
+ Zwei Minuten damit +

Von der Befehlszeile

+

Dieselbe Engine wie das Fenster, für Skripte, geplante Aufgaben und CI. Daten gehen auf die Standardausgabe und alles andere auf die Standardfehlerausgabe, sodass bws list --json | jq funktioniert und eine Warnung nie in Ihrem JSON landet.

+
bws list --query "start:auto !status:running"     was laufen sollte und nicht läuft
+bws list --query "file:missing"                   Dienste, deren Programmdatei fehlt
+bws list --query "signed:no peruser:no"           unsigniert, ohne die Kopien pro Sitzung
+bws show Spooler                                  alles, was über einen Eintrag bekannt ist
+bws stop Winmgmt --dry-run --dependents           was das Beenden mit herunterreißen würde
+bws kill Spooler --dry-run                        was das Beenden seines Prozesses mitnehmen würde
+bws start-type Spooler manual --dry-run           was es bewirken würde, ihn von automatisch zu nehmen
+bws snapshot create before.json                   den Rechner vor einer Änderung einfrieren
+bws snapshot diff before.json --live --exit-code  was sich seither geändert hat, 5 bei geänderter Konfiguration
+bws history Spooler                               wer seinen Starttyp geändert hat und wann
+bws tool fix printer --dry-run                    was die Schnellreparatur für einen hängenden Drucker täte
+ Jeder Befehl, jeder Schalter, jeder Exit-Code +
+
+ +
+
+ Beschaffen +

Entpacken und starten oder installieren

+

Windows 10 1809 oder Windows Server 2019 und neuer, 64 Bit. Die Archive brauchen keinen Installer und schreiben nichts in die Registrierung, und zum Ansehen sind keine Administratorrechte nötig. Zum Ändern braucht es eine Sitzung mit erhöhten Rechten, und beide Hälften sagen das, statt still zu scheitern - das Fenster bietet Restart as admin an.

+
+ + + + + + + +
DateiWas es ist
{{archive_window}}Das Fenster, eine eigenständige ausführbare Datei - kein .NET zu installieren
{{archive_cli}}Die Befehlszeile, eine eigenständige ausführbare Datei, für Skripte und CI
{{archive_installer}}Der Installer: beide Programme für jedes Konto auf dem Rechner, das Fenster im Startmenü und bws im PATH
+
+

Die ausführbaren Dateien tragen eine Authenticode-Signatur, sodass Windows den Herausgeber nennt, statt vor einem unbekannten zu warnen.

+ +
+
diff --git a/site/pages/home/page.json b/site/pages/home/page.json index b03ba41c..f944a497 100644 --- a/site/pages/home/page.json +++ b/site/pages/home/page.json @@ -6,6 +6,7 @@ "schema": "software", "slug": { "en": "", - "pl": "" + "pl": "", + "de": "" } } diff --git a/site/pages/query-language/de.html b/site/pages/query-language/de.html new file mode 100644 index 00000000..46a2f456 --- /dev/null +++ b/site/pages/query-language/de.html @@ -0,0 +1,178 @@ + + + + + + + +
+
+ Die Abfragesprache +

Stellen Sie dem Rechner eine Frage

+

Eine Sprache, im Suchfeld des Fensters und in bws list --query. Ein einzelnes Wort durchsucht den Namen, den Anzeigenamen, das Konto und den Startpfad. Ein Feld grenzt es ein. {{field_count}} Felder, und derselbe Text bedeutet in beiden Hälften des Werkzeugs dasselbe.

+
+
+ +
+
+

Sechs, die eine echte Frage beantworten

+
+

Was laufen sollte und nicht läuft

start:auto !status:running

Die erste Abfrage, die die meisten schreiben, und die, die services.msc überhaupt nicht beantworten kann.

+

Dienste, deren Datei fehlt

file:missing

Ein Eintrag, der auf eine Programmdatei zeigt, die nicht auf dem Datenträger liegt. Meist eine Deinstallation, die die Registrierung zurückgelassen hat.

+

Unsigniert, ohne das Rauschen der Sitzungen

signed:no peruser:no

Die Familien pro Benutzer machen eine Kopie je Sitzung und füllen eine Liste mit Beinahe-Dubletten. Das hier fragt nach dem Rest.

+

Läuft, obwohl deaktiviert

mismatch:running

Konfiguration und Zustand, die nicht zusammenpassen - ein Eintrag, den der Manager nie starten soll, läuft trotzdem.

+

Alles, was Debugrechte verlangt

privilege:SeDebugPrivilege

Ein Privileg, mit dem ein Prozess jeden anderen öffnen kann. Es lohnt sich zu wissen, welche Dienste es verlangen.

+

Was das Werkzeug nicht lesen konnte

account:?

Die Einträge, bei denen diese Sitzung das Konto nicht lesen konnte. Eine Frage, die services.msc nicht einmal stellen kann.

+
+
+
+ +
+
+

Wie eine Abfrage geschrieben wird

+
+
+

Begriffe

+
    +
  • Begriffe werden durch Leerzeichen getrennt, und alle müssen zutreffen - es gibt kein Schlüsselwort and, weil es nichts anderes bedeuten könnte.
  • +
  • Dasselbe Feld zweimal geschrieben ist die einzige Ausnahme: status:running status:stopped bedeutet das eine oder das andere, weil das geschrieben wird, wenn man zwei Filter anhakt. Zwei Grenzen bei einer Zahl grenzen dagegen weiter ein - pid:>1000 pid:<2000 ist der Bereich dazwischen.
  • +
  • ! vor einem Begriff verneint ihn: !status:running. In einer Batchdatei mit setlocal EnableDelayedExpansion frisst cmd dieses ! wortlos, und die Abfrage bedeutet stillschweigend etwas anderes - schreiben Sie dort ^! innerhalb der Anführungszeichen.
  • +
  • Ein Komma innerhalb eines Feldes ist ein oder: start:manual,disabled.
  • +
  • Anführungszeichen schützen alles mit Leerzeichen oder Doppelpunkten: account:"NT SERVICE\McmSvc".
  • +
  • Ein so eingefügter Pfad - C:\Windows\System32\svchost.exe - wird gesucht und nicht als Feld namens C gelesen.
  • +
+
+
+

Wie Text verglichen wird

+
    +
  • name:spool trifft alles, was es enthält - der Standard, weil das ist, was man von einem Suchfeld erwartet.
  • +
  • name:=spooler ist genau.
  • +
  • name:spool* nimmt Platzhalter, * und ?.
  • +
  • name:/^Sql.*/ ist ein regulärer Ausdruck und wird innerhalb der Schrägstriche so geschrieben, wie reguläre Ausdrücke geschrieben werden: \?, \\ und ein Komma bedeuten dort, was sie dort bedeuten. Ein Schrägstrich, der nie schließt, ist ein Fehler - um nach dem Schrägstrich selbst zu suchen, schreiben Sie \/ oder nehmen Anführungszeichen.
  • +
  • Groß- und Kleinschreibung wird ignoriert, auch außerhalb von ASCII - ein Anzeigename auf Polnisch oder Griechisch trifft, wie auch immer er getippt wird.
  • +
+
+
+

Drei Wörter, die jedes Feld akzeptiert

+ {{list:reserved-words}} +

Ein falsch getippter Wert ist ein Fehler, nie ein leeres Ergebnis. status:runing antwortet Did you mean running? und endet mit Code 2. Eine leere Liste sähe wie eine Antwort aus, und der Unterschied zwischen "nichts trifft zu" und "Sie haben sich vertippt" ist der Unterschied zwischen einem sauberen Rechner und einem Audit, das nichts bewiesen hat. Eine Abfrage, die nichts eingrenzen würde, wird auch auf der Befehlszeile abgelehnt, damit ein Skript wegen eines Tippfehlers nicht auf dem ganzen Rechner arbeitet.

+
+
+ +
+
+

Weitere Beispiele

+

Jedes funktioniert im Suchfeld des Fensters genauso wie nach bws list --query, und jedes wurde auf einem echten Windows ausgeführt, bevor es hier geschrieben wurde. Was es findet, hängt vom Rechner ab - und bei einer Frage nach Ärger ist eine leere Antwort die, die Sie sich wünschen.

+
+

Zustand und Starttyp

+
+ + + + + + + + +
AbfrageWas sie findet
status:stopPending,startPendingHängt beim Beenden oder Starten - das Warten, das das Snap-in anzeigt und das nie endet.
start:auto status:stopped trigger:noneAuf automatischen Start gesetzt, beendet und ohne Wartezeit auf einen Trigger - die kurze Liste, die nach einem Neustart lesenswert ist.
start:delayedAutomatisch, aber etwas nach den anderen automatischen Einträgen gestartet.
start:manual,disabled status:runningLäuft, obwohl nichts es beim Hochfahren startet - etwas hat es angefordert, ein Trigger hat es gestartet, oder jemand hat es getan.
+
+

Konten

+
+ + + + + + + +
AbfrageWas sie findet
account:localsystem !publisher:microsoftLäuft als LocalSystem, dem stärksten Konto, aus einer Datei, die Microsoft nicht signiert hat. Eine Abfrage zum Herausgeber liest Signaturen von selbst, daher dauert sie einige Sekunden.
!account:localsystem,localservice,networkservice type:ownProcess,sharedProcessDienste, die unter irgendeinem anderen Konto laufen - einem virtuellen, einem verwalteten oder dem einer Person.
account:"NT SERVICE"Ein virtuelles Konto des Dienstes selbst. Die Anführungszeichen halten die Wörter wegen des Leerzeichens zusammen.
+
+

Dateien und Signaturen

+
+ + + + + + + + + + +
AbfrageWas sie findet
signed:notSigned,untrustedRoot,tamperedKeine Signatur, eine Kette, der Windows nicht vertraut, oder eine Datei, die nach dem Signieren verändert wurde.
signed:trusted !publisher:microsoftSigniert, vertrauenswürdig und nicht von Microsoft - die Software, die andere Firmen auf diesen Rechner gebracht haben.
type:driver start:boot,system !signed:trustedTreiber, die beim Windows-Start geladen werden und deren Signatur Windows nicht vertraut. Auf einem gesunden Rechner keine.
!path:C:\Windows type:ownProcessEin Dienst mit eigenem Prozess, dessen Datei außerhalb des Windows-Ordners liegt.
path:\AppData\Gestartet aus dem Profil von jemandem, dem letzten Ort, an dem man einen Dienst erwartet.
path:\System32\\ type:ownProcessEin Backslash vor einem Leerzeichen macht das Leerzeichen zum Teil des Wortes, daher wird ein Pfad, der auf einen Backslash endet, mit zwei geschrieben, wenn ein weiterer Begriff folgt. Am Ende der Abfrage genügt einer.
+
+

Trigger und Abhängigkeiten

+
+ + + + + + + + + +
AbfrageWas sie findet
trigger:device status:stoppedWartet darauf, dass ein Gerät erscheint, ist also aus gutem Grund beendet.
trigger:networkGestartet, wenn eine Anfrage an einem Netzwerkendpunkt eintrifft - einem Port, einer benannten Pipe oder einer RPC-Schnittstelle.
trigger:stopEinträge, die ein Trigger auch beenden kann, nicht nur starten.
dependson:WinmgmtEinträge, die WMI zum Laufen brauchen.
requiredby:SpoolerAlles, was der Druckerspooler zum Laufen braucht, und was jene wiederum brauchen.
+
+

Privilegien und Prozesse

+
+ + + + + + + + + + +
AbfrageWas sie findet
privilege:SeTcbPrivilegeVerlangt, als Teil des Betriebssystems zu handeln.
privilege:SeImpersonatePrivilege !account:localsystemKann im Namen eines Clients handeln, während es unter einem anderen Konto als LocalSystem läuft.
sidtype:unrestrictedTrägt in seinem Prozess eine eigene Dienst-SID, sodass Berechtigungen es allein benennen können. sidtype:restricted fragt nach denen, deren Prozess zusätzlich schreibbeschränkt ist.
type:sharedProcess status:runningLäuft in einem gemeinsamen svchost, zusammen mit anderen.
memory:>200MBEin Prozess, der mehr als 200 MB nutzt. Der Speicher wird von selbst gelesen, wenn eine Abfrage danach fragt.
pid:1000-2000In einem Prozess, dessen ID zwischen 1000 und 2000 liegt.
+
+

Namen und Text

+
+ + + + + + + + + + + +
AbfrageWas sie findet
spoolEin einzelnes Wort, gesucht im Namen, im Anzeigenamen, im Konto und im Startpfad.
name:=wuauservGenau dieser Name und nichts, was ihn nur enthält.
name:win*Namen, die mit win beginnen, mit einem Platzhalter geschrieben.
name:/svc$/Namen, die auf svc enden, als regulärer Ausdruck geschrieben.
description:noneÜberhaupt keine Beschreibung, was bei den meisten Treibern der Fall ist.
description:?Eine Beschreibung, die Windows nicht herausgeben konnte, meist weil sie auf eine Sprachdatei zeigt, die nicht da ist.
peruser:templateDie Vorlagen pro Benutzer, die Windows für jede angemeldete Sitzung kopiert.
+
+
+
+
+ +
+
+

Jedes Feld

+

Aus dem Programm selbst gebaut, sodass diese Tabelle nicht von dem abweichen kann, was das Werkzeug akzeptiert. Ein Feld ohne Werteliste nimmt Text, eine Zahl oder eine Größe - die dritte Spalte sagt, welches.

+ {{table:query-fields}} +
+
+ +
+
+

Zwei Dinge, die man wissen sollte

+
+
+

Manche Felder sind teuer, und wer nach ihnen fragt, schaltet das Lesen ein

+

Signaturen brauchen über einen ganzen Rechner mehrere Sekunden, und der Speicher ist eine Messung und keine Einstellung, daher wird keines von beiden für eine Liste gelesen, wenn nicht danach gefragt wird. Eine Abfrage, die eines erwähnt, schaltet dieses Lesen von selbst ein - Sie müssen sich nicht zusätzlich zu signed:no noch --signatures merken. Im Fenster sagt eine Abfrage zu Signaturen, dass die Antwort unvollständig ist, bis sie eintreffen, statt eine kürzere Liste so zu zeigen, als wäre sie die Antwort.

+
+
+

Ein Ergebnis, das nach etwas Unlesbarem beurteilt wurde, sagt das

+

Wenn Einträge nach einem Feld beurteilt wurden, das diese Sitzung nicht lesen konnte, trägt das Ergebnis eine Zeile mit der Anzahl - denn ein solches Ergebnis kann Einträge vermissen oder welche enthalten, die nicht hineingehören. Das ist dieselbe Regel, die das ganze Werkzeug einhält: ein erfolgloses Lesen ist in der Antwort sichtbar und wird nie verschluckt. Ein Herausgeber wird genauso behandelt, wenn nur das Zertifikat ihn behauptet: neben jedem anderen Urteil als trusted wird der Name als not verified gezeigt, und publisher: zählt den Eintrag in einer eigenen Zeile als unsicher - so behält !publisher:microsoft eine Microsoft-Datei, die jemand nach dem Signieren verändert hat.

+
+
+ Die Referenz der Befehlszeile +
+
diff --git a/site/pages/query-language/page.json b/site/pages/query-language/page.json index 42397cfb..ed9b6585 100644 --- a/site/pages/query-language/page.json +++ b/site/pages/query-language/page.json @@ -6,6 +6,7 @@ "footer": "product", "slug": { "en": "query-language", - "pl": "jezyk-zapytan" + "pl": "jezyk-zapytan", + "de": "abfragesprache" } } diff --git a/site/pages/sc-exe-and-powershell/de.html b/site/pages/sc-exe-and-powershell/de.html new file mode 100644 index 00000000..c3a0d4b9 --- /dev/null +++ b/site/pages/sc-exe-and-powershell/de.html @@ -0,0 +1,97 @@ + + + + + +
+
+ Leitfaden +

sc.exe, Get-Service und dieses Werkzeug

+

Beide sind schon auf dem Rechner, und beide bleiben nützlich. Diese Seite handelt davon, wo sie aufhören - und sie sagt klar, wo sie noch die bessere Antwort sind.

+
+
+ +
+
+

Wo jedes aufhört

+
+
+

sc.exe

+

Es erreicht fast alles, was der Dienststeuerungs-Manager weiß, und sagt Ihnen nichts darüber, wie man fragt. Die Syntax stammt aus den Neunzigern - sc config X start= auto, wobei das Leerzeichen nach dem Gleichheitszeichen Pflicht ist und sein Fehlen ein stilles Scheitern bedeutet, das zu tun, was Sie meinten.

+

Es antwortet jeweils zu einem Eintrag. Es gibt kein Filtern, keine Ausgabe, die ein Skript ohne einen eigenen Parser lesen kann, und keine Vorschau: sc stop klappt entweder oder gibt eine Zahl zurück.

+
+
+

Get-Service und die *-Service-Cmdlets

+

Richtige Objekte, eine Pipeline und eine oberflächliche Sicht. In Windows PowerShell 5.1, der, die mit Windows kommt, zeigt Get-Service weder das Konto, unter dem ein Dienst läuft, noch seine Beschreibung. PowerShell 7 zeigt beides und auch den Startpfad und wird separat installiert.

+

Stop-Service -Force bedeutet "auch wenn etwas davon abhängt" - es beendet die abhängigen Dienste und sagt es Ihnen hinterher und nicht vorher.

+
+
+
+
+ +
+
+

Dieselben Fragen, auf drei Arten

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FrageMit dem, was auf dem Rechner istHier
Was laufen sollte und nicht läuftGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }bws list --query "start:auto !status:running"
Welche Dienste eine unsignierte Programmdatei habenJeden Startpfad lesen, auflösen, Get-AuthenticodeSignature für jeden aufrufen - ein Skript, kein Befehlbws list --query "signed:no"
Was das Beenden hiervon mit herunterreißen würdesc enumdepend X, dann die Liste lesen und selbst entscheidenbws stop X --dry-run --dependents, das ist der Plan, der laufen würde
Was sich seit letzter Woche geändert hatNichts, außer Sie haben den Sammler selbst geschriebenbws snapshot diff before.json --live
Wer den Starttyp wann geändert hatGet-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, dann die Meldung jedes Ereignisses lesenbws history Spooler, dessen erste Zeile sagt, wie weit das Protokoll zurückreicht
Maschinenlesbare AusgabeObjekte von PowerShell, Text von sc.exe--json bei jedem Befehl, auf der Standardausgabe, mit Warnungen auf der Standardfehlerausgabe
+
+

Wo dieses Werkzeug bei einem Dienst von sc.exe abweicht, ist das hier ein Fehler. Ein Teil der Testsuite führt beide gegen den Rechner aus, auf dem er läuft, und vergleicht sie Eintrag für Eintrag, und ein Unterschied zwischen beiden ist das Nützlichste, was Sie in ein Issue schreiben können.

+
+
+ +
+
+

Wann Sie bei dem bleiben, was Sie haben

+
    +
  • Sie sind auf einem Rechner, den Sie nur einmal anfassen. Beide sind schon da, und nichts muss an einer Richtlinie vorbei.
  • +
  • Sie müssen das Konto, den Startpfad oder die Wiederherstellungsaktionen ändern. sc.exe kann alle drei. Dieses Werkzeug zeigt das Konto und den Startpfad und ändert keines von beiden und liest Wiederherstellungsaktionen nur, um zu warnen, bevor es einen Prozess beendet.
  • +
  • Sie müssen einen Dienst anlegen oder löschen. sc create und sc delete. Hier nicht, mit Absicht.
  • +
  • Sie stecken schon tief in einer PowerShell-Pipeline. bws list --json kommt über ConvertFrom-Json als Objekte zurück, sodass es sich in die Pipeline einfügt, statt sie zu ersetzen.
  • +
+
+
+ +
+
+

Zusammen statt anstelle

+

Das Werkzeug, das was stimmt mit diesem Rechner nicht beantwortet, und die Werkzeuge, die eine Einstellung ändern, sind nicht dasselbe Werkzeug. Stellen Sie die Frage hier, lesen Sie den Plan hier und nehmen Sie zum Ausführen, was Sie mögen - der Plan gibt die Befehlszeile aus, die dasselbe verlangt, und diese Zeile ist zum Kopieren gedacht.

+ +
+
diff --git a/site/pages/sc-exe-and-powershell/page.json b/site/pages/sc-exe-and-powershell/page.json index 4470e477..6d5b50b9 100644 --- a/site/pages/sc-exe-and-powershell/page.json +++ b/site/pages/sc-exe-and-powershell/page.json @@ -6,6 +6,7 @@ "footer": "guides", "slug": { "en": "sc-exe-and-powershell", - "pl": "sc-exe-i-powershell" + "pl": "sc-exe-i-powershell", + "de": "sc-exe-und-powershell" } } diff --git a/site/pages/services-msc-alternative/de.html b/site/pages/services-msc-alternative/de.html new file mode 100644 index 00000000..7240d659 --- /dev/null +++ b/site/pages/services-msc-alternative/de.html @@ -0,0 +1,102 @@ + + + + + +
+
+ Leitfaden +

Eine services.msc-Alternative

+

Das Snap-in Dienste hat sich seit Windows 2000 kaum verändert. Es ist noch immer der schnellste Weg, einen Dienst zu starten, den Sie schon auf dem Bildschirm sehen, und der langsamste, um irgendeine Frage zu einem Rechner zu beantworten.

+
+
+ +
+
+

Was Leute dazu bringt, sich umzusehen

+
+
    +
  • Keine Suche. Navigiert wird nur, indem man einen Buchstaben tippt, um zum ersten Anzeigenamen zu springen, der damit beginnt. Auf einem Rechner mit achthundert Einträgen ist das Scrollen mit Zusatzschritten.
  • +
  • Kein Filtern. Es gibt keine Möglichkeit zu fragen, was automatisch starten soll und nicht läuft - die eine Frage, die einen kaputten Rechner findet.
  • +
  • Eine Zeile nach der anderen. Zwölf Dienste neu zu starten heißt zwölf Rechtsklicks und zwölf Wartezeiten.
  • +
  • "Wird beendet..." ohne Ausweg außer dem Task-Manager und dem Raten, welcher svchost zu beenden ist.
  • +
+
    +
  • Kein Verlauf. Niemand weiß, wer diesen Starttyp auf Deaktiviert gesetzt hat, oder wann, oder ob es im letzten Monat schon so war.
  • +
  • Verborgene Daten. Der Prozess, die Trigger, die erforderlichen Privilegien, der Sicherheitsdeskriptor, wer die Programmdatei signiert hat - nichts davon steht im Snap-in, und alles davon zählt, wenn etwas nicht stimmt.
  • +
  • Die Spalten lassen sich nicht ändern. Name, Beschreibung, Status, Starttyp, Anmelden als. Das ist die ganze Liste, und keine davon lässt sich auf einem echten Rechner sinnvoll sortieren.
  • +
+
+
+
+ +
+
+

Dieselben drei Aufgaben, in beiden

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Sie wollenIn services.mscHier
Finden, was laufen sollte und nicht läuftNach Starttyp sortieren, scrollen, jede Zeile lesenstart:auto !status:running
Wissen, was ein Beenden mit herunterreißtEin Dialog, der abhängige Dienste nennt, nachdem Sie Beenden gedrückt habenEin Plan, bevor etwas geschieht, mit jedem abhängigen Dienst als Schritt und einer Warnung, wenn einer davon etwas ist, das der Rechner braucht
Wissen, was sich seit letzter Woche geändert hatNichtsbws snapshot diff before.json --live
Wissen, wer einen Starttyp geändert hatNichtsbws history Spooler, aus dem Systemprotokoll
Zwölf Dienste neu startenZwölf RechtsklicksZwölf auswählen, ein Plan, ein Lauf, ein Bericht
Sehen, wer eine Dienst-Programmdatei signiert hatWird nicht angezeigtEine Spalte und etwas, wonach man suchen kann: signed:no
Irgendetwas davon per SkriptNicht skriptbarbws, mit --json und einem Exit-Code für jedes Ende
+
+
+
+ +
+
+

Was das Snap-in noch immer besser kann

+

Zwei Dinge, und etwas anderes zu behaupten wäre die Art von Aussage, die dieses Projekt nicht macht.

+
    +
  • Es ist schon auf dem Rechner. Nichts herunterzuladen, nichts an einer Softwarerichtlinie vorbeizubringen. Auf einem Rechner, den Sie nur einmal anfassen, ist das das ganze Argument.
  • +
  • Es bearbeitet Wiederherstellungsaktionen, das Konto und den Startpfad. Dieses Werkzeug zeigt das Konto und den Startpfad und ändert keines von beiden und liest Wiederherstellungsaktionen nur, um zu warnen, bevor es einen Prozess beendet. Einen Dienst anzulegen, zu löschen oder umzulenken ist hier ebenfalls nicht enthalten.
  • +
+

Was es überhaupt nicht kann, ist der Grund, warum es das hier gibt: eine Frage stellen, zuerst einen Plan zeigen und sagen, was abgedriftet ist.

+
+
+ +
+
+

Was das hier ist

+

{{product}} ist kostenlos und quelloffen unter der GPL-3.0, eine Datei pro Hälfte oder ein Installer für den ganzen Rechner, und es nimmt nie Kontakt zum Internet auf. Zum Lesen sind keine Administratorrechte nötig - zum Ändern schon, und es sagt das, statt still zu scheitern.

+ +
+
diff --git a/site/pages/services-msc-alternative/page.json b/site/pages/services-msc-alternative/page.json index 76291bc3..0ac5bc2e 100644 --- a/site/pages/services-msc-alternative/page.json +++ b/site/pages/services-msc-alternative/page.json @@ -6,6 +6,7 @@ "footer": "guides", "slug": { "en": "services-msc-alternative", - "pl": "alternatywa-dla-services-msc" + "pl": "alternatywa-dla-services-msc", + "de": "services-msc-alternative" } } diff --git a/site/pages/snapshots-and-drift/de.html b/site/pages/snapshots-and-drift/de.html new file mode 100644 index 00000000..b4ac7495 --- /dev/null +++ b/site/pages/snapshots-and-drift/de.html @@ -0,0 +1,65 @@ + + + + + +
+
+ Das, was services.msc nie konnte +

Snapshots und Drift

+

Jedes andere Werkzeug sagt Ihnen, wie ein Rechner jetzt aussieht. Die Frage, die ein Administrator wirklich hat, ist was ist anders als damals, als es funktionierte - und kein gewöhnliches Windows beantwortet sie.

+
+
+ +
+
+

Was ein Snapshot enthält

+

Den ganzen Rechner in einem Augenblick: jeden Dienst und jeden Treiber mit Starttyp, Konto, Startpfad und Argumenten, Hash und Signierer der Datei, die er ausführt, seinen Abhängigkeiten und dem, was von ihm abhängt, seinen Triggern, seinen erforderlichen Privilegien, seinem SID-Typ und seinem Sicherheitsdeskriptor - dazu den Namen des Rechners, das Konto, das ihn erstellt hat, und ob dieses Konto ein Administrator war.

+
bws snapshot create before.json --note "before the patch"
+

Er ist JSON mit einem Feld pro Zeile. Das ist Absicht: Ein Snapshot passt so in ein Repository, und git diff liest ihn, sodass der eigene Vergleich des Werkzeugs nicht der einzige Weg ist, einen anzusehen.

+

Legen Sie ihn ab wie das, was er ist. Ein Snapshot beschreibt den ganzen Rechner bis hin zu jedem Startpfad und jedem Sicherheitsdeskriptor. Er wird mit den Berechtigungen geschrieben, die sein Verzeichnis ohnehin hat, und das Werkzeug schränkt nichts ein - ein Verzeichnis, das andere lesen können, ist also eines, in dem sie all das lesen können.

+
+
+ +
+
+

Dann fragen, was anders ist

+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
+
    +
  • Konfiguration und Laufzustand werden getrennt gemeldet. Zwei Snapshots im Abstand eines Tages unterscheiden sich darin, was gerade läuft, und fast nichts davon ist Drift. Zusammengemischt geht die eine Zeile, auf die es ankommt - ein Starttyp, den jemand geändert hat -, unter vierzig anderen unter.
  • +
  • Was sich nicht vergleichen ließ, wird aufgelistet und nicht versteckt. Ein Feld, das einer der beiden Snapshots nie gelesen hat, weil diese Sitzung dafür keine Rechte hatte, erscheint als not compared unter seinem Eintrag, und die Zusammenfassung zählt diese Einträge. Ein Vergleich, der nichts hat sich geändert sagt, bedeutet also: nichts hat sich in dem geändert, was beide Seiten sehen konnten.
  • +
+
    +
  • Ein Snapshot mit erhöhten Rechten gegen einen ohne würde lügen und Einträge als entfernt melden, die niemand entfernt hat. Jede Datei hält fest, ob das Konto, das sie erstellt hat, ein Administrator war, und der Vergleich sagt das.
  • +
  • Zwei Dateien, nicht nur eine Datei und dieser Rechner. Machen Sie einen auf dem Staging- und einen auf dem Produktivsystem und vergleichen Sie sie irgendwo - die Antwort auf warum unterscheidet sich Staging braucht keinen der beiden Rechner vor Ort.
  • +
+
+

Das Fenster tut dasselbe unter Audit.... Take snapshot... schreibt dieselbe Datei, mit einer Notiz, wenn Sie eine eingeben, und Compare with this machine... oder Compare two snapshots... zeigt anstelle der Liste, was sich geändert hat, eine Zeile pro Feld, wobei alles, was den Vergleich weniger als exakt macht, über der Tabelle steht. Show grenzt ihn auf die Unterschiede oder auf ein Feld ein, und Export... schreibt ihn in eine CSV-Datei.

+
+
+ +
+
+

Der Exit-Code ist der Punkt

+

--exit-code endet mit 5, wenn sich die Konfiguration unterscheidet - ein Eintrag hinzugefügt oder entfernt, oder einer anders eingerichtet. Ein Dienst, der nur von selbst angehalten oder gestartet wurde, wird gemeldet und zählt nicht, und die Kopien pro Benutzer, die Windows für jede angemeldete Sitzung anlegt, ebenso nicht - sie werden ausgelassen und gezählt. Kein Fehler - Drift zu finden ist wofür dieses Werkzeug da ist, und sie zu finden ist kein Fehler -, weshalb er eine eigene Nummer hat und nicht die ausleiht, die bedeutet, dass etwas schiefging.

+
# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - keine Konfigurationsdrift
+#   5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+#   3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+

Das ist der ganze Mechanismus: eine Baseline, erstellt, als der Rechner als gut bekannt war, und eine Frage, die jede Nacht gestellt wird. Antwortet er in der ersten Nacht mit 5, erfährt es jemand in der ersten Nacht und nicht am Morgen, an dem etwas kaputtgeht.

+ Das für ein Audit nutzen +
+
diff --git a/site/pages/snapshots-and-drift/page.json b/site/pages/snapshots-and-drift/page.json index 3e0cfe05..02c034e0 100644 --- a/site/pages/snapshots-and-drift/page.json +++ b/site/pages/snapshots-and-drift/page.json @@ -6,6 +6,7 @@ "footer": "product", "slug": { "en": "snapshots-and-drift", - "pl": "snapshoty-i-dryf" + "pl": "snapshoty-i-dryf", + "de": "snapshots-und-drift" } } diff --git a/site/pages/stop-a-service-that-will-not-stop/de.html b/site/pages/stop-a-service-that-will-not-stop/de.html new file mode 100644 index 00000000..66c0d39d --- /dev/null +++ b/site/pages/stop-a-service-that-will-not-stop/de.html @@ -0,0 +1,68 @@ + + + + + +
+
+ Leitfaden +

Ein Dienst hängt bei Wird beendet...

+

Das Snap-in zeigt Wird beendet und bewegt sich nie. Die übliche Antwort ist der Task-Manager, ein Raten, in welchem svchost.exe er lebt, und Task beenden - was auch jeden anderen Dienst in diesem Prozess beendet, ohne zu sagen, welche das waren.

+
+
+ +
+
+

Warum das passiert

+
    +
  • Der Dienst antwortet nicht auf die Beenden-Anforderung. Windows bittet ihn höflich und wartet. Ein Dienst, der hängt oder auf etwas wartet, das nicht zurückkommt, antwortet nie.
  • +
  • Etwas, das von ihm abhängt, läuft noch. Der Manager lehnt das Beenden ab, statt das andere kaputtzumachen, und das Snap-in zeigt das als Wartezeit.
  • +
  • Er teilt seinen Prozess mit anderen. Die meisten Windows-Dienste leben in einem gemeinsamen svchost.exe. Beendet man diesen Prozess, endet es für alle, und genau das tut der Task-Manager, ohne sie zu nennen.
  • +
+
+
+ +
+
+

Ansehen, bevor Sie etwas beenden

+

Fragen Sie, was das Beenden mitnehmen würde. Nichts geschieht, bis Sie --dry-run weglassen.

+
$ bws kill Spooler --dry-run
+

Die Vorschau nennt den Prozess mit seiner Nummer, nennt jeden anderen Dienst, der in ihm lebt, und zeigt zwei Schritte statt einem: den Dienst bitten, sich zu beenden, und nur wenn das nicht klappt den Prozess beenden. Ein Dienst, der von selbst anhält, wird nie beendet.

+
+
    +
  • --force überspringt den höflichen Schritt und beendet den Prozess sofort. Es ändert den Plan und nicht dessen Ausführung, sodass die Vorschau einen Schritt statt zwei zeigt und der Unterschied sichtbar ist, bevor etwas geschieht.
  • +
  • --restart bringt alles zurück, sobald der Prozess weg ist - den Eintrag, nach dem Sie gefragt haben, und alles, was seinen Prozess teilte. Ohne es bleibt der Rechner mit diesen angehaltenen Diensten zurück, und der Bericht sagt, wie man sie wieder startet.
  • +
+
    +
  • Die Ablehnung kommt vor der Schaltfläche. Ein Treiber, ein Prozess, den das System schützt, ein Dienst, für den der Manager kein Beenden annimmt - abgelehnt, wenn der Plan gebaut wird, mit Begründung, statt nach sechzig Sekunden Warten.
  • +
  • Eine Warnung, wenn es darauf ankommt. Ist der Eintrag einer, ohne den der Rechner nicht funktioniert, sagt der Plan das - ihn zu beenden legt den Rechner lahm, nicht nur den Dienst.
  • +
+
+

Einen Prozess zu beenden ist das Einzige, was dieses Werkzeug tut, wogegen niemand im Namen des Rechners Einspruch erheben kann. Deshalb ist es ein eigener Befehl, deshalb nennt die Vorschau jeden Dienst, den es mitnimmt, und deshalb kommt der höfliche Schritt zuerst, sofern Sie nichts anderes sagen.

+
+
+ +
+
+

Die sicherere Reihenfolge

+
    +
  1. Sehen, was es ist. bws show Spooler - der Prozess, was von ihm abhängt, wovon er abhängt und ob er überhaupt Beenden-Anforderungen annimmt.
  2. +
  3. Das gewöhnliche Beenden als Plan versuchen. bws stop Spooler --dry-run --dependents. Lautet die Antwort Ablehnung, sagt sie, welcher der drei Gründe es ist.
  4. +
  5. Lässt er sich nicht beenden, ansehen, was das Beenden kostet. bws kill Spooler --dry-run, und die Liste der Dienste lesen, die diesen Prozess teilen.
  6. +
  7. Dann ausführen, mit einem Weg zurück. bws kill Spooler --restart. Der Bericht endet mit dem, was nicht geklappt hat, und den Befehlen, die alles zurückbringen.
  8. +
+

Alle vier funktionieren im Fenster genauso: Rechtsklick auf eine Zeile, Force stop... wählen, den Plan lesen, und die Schaltfläche darunter ist nach dem benannt, was sie tun wird.

+
+
+ +
+
+

Warum nicht einfach den Task-Manager nehmen

+

Weil er eine andere Frage beantwortet. Der Task-Manager kennt Prozesse, und dieses Problem betrifft Dienste, und beide entsprechen einander nicht eins zu eins.

+

Ein gemeinsamer svchost.exe kann ein Dutzend Dienste halten. Der Task-Manager beendet ihn, ohne zu sagen, welche zwölf, keiner kommt von selbst zurück, und nichts sagt Ihnen danach, was angehalten wurde. Ein EDR, der einen Prozess meldet, der svchost.exe beendet, macht seine Arbeit, und er kann Ihren Klick nicht von allem anderen unterscheiden.

+ +
+
diff --git a/site/pages/stop-a-service-that-will-not-stop/page.json b/site/pages/stop-a-service-that-will-not-stop/page.json index 92355120..b562994c 100644 --- a/site/pages/stop-a-service-that-will-not-stop/page.json +++ b/site/pages/stop-a-service-that-will-not-stop/page.json @@ -6,6 +6,7 @@ "footer": "guides", "slug": { "en": "stop-a-windows-service-that-will-not-stop", - "pl": "usluga-ktora-nie-chce-sie-zatrzymac" + "pl": "usluga-ktora-nie-chce-sie-zatrzymac", + "de": "windows-dienst-laesst-sich-nicht-beenden" } } diff --git a/site/pages/what-should-be-running/de.html b/site/pages/what-should-be-running/de.html new file mode 100644 index 00000000..3a9d80e2 --- /dev/null +++ b/site/pages/what-should-be-running/de.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Leitfaden +

Welche Dienste sollten laufen?

+

Die ehrliche Antwort ist, dass es Ihnen niemand sagen kann, und jede Liste, die es behauptet, beschreibt einen Rechner, der nicht Ihrer ist. Was sich beantworten lässt, ist enger und weit nützlicher: Was geht auf diesem Rechner nicht auf, und was ist anders als damals, als es funktionierte.

+
+
+ +
+
+

Warum die allgemeine Frage keine Antwort hat

+
    +
  • Die Menge unterscheidet sich nach Windows-Edition, Version und Rolle. Ein Domänencontroller, ein Laptop und ein Container-Host sind sich bei fast nichts einig, und eine Liste, die für einen geschrieben wurde, ist für die anderen falsch.
  • +
  • Die Hälfte von dem, was installiert ist, stammt nicht von Windows. Treiber, Agenten, Updatedienste, Lizenzdämonen - jeder davon wurde von etwas dorthin gebracht, und keine allgemeine Liste weiß, von was.
  • +
  • Die meisten Dienste sollen angehalten sein. Ein modernes Windows startet einen Bruchteil dessen, was es registriert: Der Rest wartet auf einen Trigger - ein Gerät, das erscheint, ein Port, der sich öffnet, der Beitritt zu einer Domäne - und angehalten ist ihr richtiger Zustand.
  • +
  • Listen "Deaktivieren Sie diese für mehr Leistung" sind der Weg, wie Rechner kaputtgehen. Der Dienst, der untätig aussieht, ist der, den etwas anderes bei Bedarf startet, und der Fehler zeigt sich eine Woche später an einer ganz anderen Stelle.
  • +
+
+
+ +
+
+

Die Fragen, die Antworten haben

+
+
+

Was laufen sollte und nicht läuft

+

start:auto !status:running

+

Windows wurde angewiesen, diese zu starten, und sie laufen nicht. Auf einem gesunden Rechner ist das eine kurze Liste - ein paar Einträge, die spät starten und wieder enden. Alles andere ist einen Blick wert.

+
+
+

Was deaktiviert ist und trotzdem läuft

+

mismatch:running

+

Konfiguration und Zustand passen nicht zusammen. Meist hat jemand es deaktiviert, ohne es anzuhalten, und der nächste Neustart wird eine Überraschung.

+
+
+

Was auf eine Datei zeigt, die weg ist

+

file:missing

+

Eine Deinstallation, die die Registrierung zurückgelassen hat. Harmlos, bis etwas versucht, es zu starten, und ein Hinweis darauf, was einmal auf diesem Rechner war.

+
+
+

Was niemand signiert hat

+

signed:no peruser:no

+

Für sich genommen kein Beweis für irgendetwas und der richtige Ort, mit dem Lesen zu beginnen. Der zweite Begriff lässt die Familien pro Benutzer weg, die die Liste sonst mit Beinahe-Dubletten füllen.

+
+
+

Was die stärksten Privilegien verlangt

+

privilege:SeDebugPrivilege

+

Ein Privileg, mit dem ein Prozess jeden anderen öffnen kann. Eine Handvoll legitimer Dienste verlangt es, und es lohnt sich zu wissen, welche es auf Ihrem Rechner sind.

+
+
+

Was auf einen Trigger wartet

+

trigger:any status:stopped

+

Angehalten, weil noch nichts nach ihnen gefragt hat, und nicht, weil etwas nicht stimmt. Zu wissen, welche das sind, ist der Weg, auf dem die erste Liste aufhört, beunruhigend zu sein.

+
+
+
+
+ +
+
+

Die Frage, die alle schlägt

+

Fragen Sie den Rechner selbst, als er funktionierte.

+

Machen Sie einen Snapshot an dem Tag, an dem der Rechner in Betrieb geht. Dann wird aus sollte das laufen die Frage lief das, als alles funktionierte - eine Frage zu Ihrem Rechner und nicht zu einem Rechner in einem Artikel.

+
bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... eine Woche, ein Patch oder ein Vorfall später
+bws snapshot diff C:\baselines\web01.json --live
+

Die Konfiguration wird getrennt vom Laufzustand gemeldet, sodass die Antwort nicht vierzig Dienste sind, die zufällig laufen - sondern der Starttyp, den jemand geändert hat.

+ Einen Rechner auf Drift auditieren +
+
+ +
+
+

Bevor Sie etwas beenden

+

Jedes Beenden in diesem Werkzeug zeigt zuerst seinen Plan: die Schritte, was mit ihnen heruntergeht, und eine Warnung, wenn einer davon etwas ist, ohne das der Rechner nicht funktioniert. Die Liste dieser Dienste ist eine Startliste mit sieben Einträgen - die beiden Hälften von RPC und der DCOM-Starter, der Kontenmanager, die Schlüsselisolierung, der Sitzungsmanager und Plug and Play - und Remotedesktop steht nicht darauf, lesen Sie also in einer Remotesitzung den Plan.

+ +
+
diff --git a/site/pages/what-should-be-running/page.json b/site/pages/what-should-be-running/page.json index aced581e..943bcfe1 100644 --- a/site/pages/what-should-be-running/page.json +++ b/site/pages/what-should-be-running/page.json @@ -6,6 +6,7 @@ "footer": "guides", "slug": { "en": "what-windows-services-should-be-running", - "pl": "ktore-uslugi-windows-powinny-dzialac" + "pl": "ktore-uslugi-windows-powinny-dzialac", + "de": "welche-windows-dienste-laufen-sollten" } } diff --git a/site/site.json b/site/site.json index 12770688..51a92a39 100644 --- a/site/site.json +++ b/site/site.json @@ -7,7 +7,7 @@ "support": "https://donislawdev.com/support/", "_languages": "The languages that are PUBLISHED, in the order the switch lists them. The first is the default and lives at the root. The others live under /{code}/. A language that is in language_registry and not here is prepared and unreachable, which is how it is written and built before it goes live.", - "languages": ["en", "pl"], + "languages": ["en", "de", "pl"], "_language_registry": "How each language is written, in one place. The key is the address code in lower case and the name of its files (site/i18n/{code}.json, site/pages/{id}/{code}.html). tag is what lang and hreflang carry, locale is og:locale, name is the language in its OWN alphabet and is never translated, short is what the switch shows for the language you are in. dir is written only when it is rtl. slugs is own when the language has a slug of its own for every page in each page.json, and english when its pages live at the default language's slugs - the choice for alphabets that cannot be an ASCII address without being transliterated.", "language_registry": { From 4442b59eb25851bec9db805e8c7ee328471ca3a9 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 21 Oct 2026 10:30:12 +0200 Subject: [PATCH 2/5] Add the website in French Twelve pages and the language file, with slugs of their own, held against the English pages for shape, commands and tokens and stamped with the English they follow. Co-Authored-By: Claude Sonnet 5.5 --- site/i18n/fr.json | 95 +++++++++ site/pages/404/fr.html | 30 +++ site/pages/404/page.json | 3 +- site/pages/audit-windows-services/fr.html | 64 ++++++ site/pages/audit-windows-services/page.json | 3 +- site/pages/cli-reference/fr.html | 194 +++++++++++++++++ site/pages/cli-reference/page.json | 3 +- site/pages/download/fr.html | 86 ++++++++ site/pages/download/page.json | 3 +- site/pages/faq/fr.html | 78 +++++++ site/pages/faq/page.json | 3 +- site/pages/home/fr.html | 200 ++++++++++++++++++ site/pages/home/page.json | 3 +- site/pages/query-language/fr.html | 178 ++++++++++++++++ site/pages/query-language/page.json | 3 +- site/pages/sc-exe-and-powershell/fr.html | 97 +++++++++ site/pages/sc-exe-and-powershell/page.json | 3 +- site/pages/services-msc-alternative/fr.html | 102 +++++++++ site/pages/services-msc-alternative/page.json | 3 +- site/pages/snapshots-and-drift/fr.html | 65 ++++++ site/pages/snapshots-and-drift/page.json | 3 +- .../stop-a-service-that-will-not-stop/fr.html | 68 ++++++ .../page.json | 3 +- site/pages/what-should-be-running/fr.html | 86 ++++++++ site/pages/what-should-be-running/page.json | 3 +- site/site.json | 2 +- 26 files changed, 1368 insertions(+), 13 deletions(-) create mode 100644 site/i18n/fr.json create mode 100644 site/pages/404/fr.html create mode 100644 site/pages/audit-windows-services/fr.html create mode 100644 site/pages/cli-reference/fr.html create mode 100644 site/pages/download/fr.html create mode 100644 site/pages/faq/fr.html create mode 100644 site/pages/home/fr.html create mode 100644 site/pages/query-language/fr.html create mode 100644 site/pages/sc-exe-and-powershell/fr.html create mode 100644 site/pages/services-msc-alternative/fr.html create mode 100644 site/pages/snapshots-and-drift/fr.html create mode 100644 site/pages/stop-a-service-that-will-not-stop/fr.html create mode 100644 site/pages/what-should-be-running/fr.html diff --git a/site/i18n/fr.json b/site/i18n/fr.json new file mode 100644 index 00000000..50888629 --- /dev/null +++ b/site/i18n/fr.json @@ -0,0 +1,95 @@ +{ + "_translated_from": "1867e30d6665", + "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.", + + "chrome.skip": "Aller au contenu", + "chrome.nav": "Site", + "chrome.language": "Langue", + + "chrome.footer.product": "Produit", + "chrome.footer.guides": "Guides", + "chrome.footer.project": "Projet", + "chrome.footer.source": "Code source sur GitHub", + "chrome.footer.releases": "Versions", + "chrome.footer.issues": "Suivi des tickets", + "chrome.footer.security": "Signaler un problème de sécurité", + "chrome.footer.support": "Soutenir le projet", + + "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publié sous la licence publique générale GNU, version 3. Réalisé avec un flux de travail assisté par IA.", + "chrome.legal.trademark": "{{product}} n'est ni affilié à Microsoft, ni approuvé, ni parrainé par Microsoft. Windows est une marque du groupe de sociétés Microsoft, et le nom n'est utilisé ici que pour dire ce que l'outil gère.", + "chrome.legal.privacy": "Ce site ne dépose aucun cookie, n'exécute aucun script et ne charge rien depuis ailleurs.", + + "table.head.code": "Code", + "table.head.meaning": "Signification", + "table.head.switch": "Option", + "table.head.what": "Ce qu'elle fait", + "table.head.where": "Où elle agit", + "table.head.field": "Champ", + "table.head.asks": "Interroge", + "table.head.values": "Valeurs", + + "exit.ok": "Terminé, et tout est arrivé là où cela devait aller.", + "exit.runtime": "L'outil a échoué - il n'a pas pu faire ce qui lui était demandé, pour une raison qui tient à l'outil et non au plan.", + "exit.usage": "La ligne de commande était erronée. Une commande mal orthographiée se voit proposer celle que vous vouliez probablement.", + "exit.incomplete": "Le plan était bon, il s'est exécuté, et quelque chose dedans n'est pas arrivé là où cela devait aller - le gestionnaire a refusé, ou la session n'y avait pas droit.", + "exit.interrupted": "Quelqu'un a arrêté l'exécution à la main. Non nul même si chaque étape était arrivée, de sorte qu'un script enveloppant ne traite pas une exécution interrompue comme propre.", + "exit.differences": "Une comparaison s'est exécutée et a trouvé la configuration dérivée - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. L'état d'exécution seul n'est pas une dérive. Seulement avec --exit-code, car trouver une dérive est ce pour quoi cet outil existe, et la trouver n'est pas un échec.", + + "switch.query": "Affiner la liste avec le langage de requête.", + "switch.signatures": "Lire qui a signé chaque exécutable et si Windows lui fait confiance. Plusieurs secondes sur toute une machine, donc désactivé sauf demande - et une requête sur les signatures l'active d'elle-même.", + "switch.memory": "Lire ce que consomme le processus de chaque entrée en marche. Désactivé par défaut parce que c'est une mesure et non un réglage : elle est différente une seconde plus tard.", + "switch.required-by": "Lire quelles entrées cessent de fonctionner si l'une est arrêtée, demandé directement à Windows plutôt que déduit de ce que chacun déclare. Un appel par entrée, donc désactivé sauf demande. show et snapshot create le lisent à chaque fois.", + "switch.follow-network": "Laisser l'outil sortir de cette machine, quoi que ce soit - un chemin de lancement situé sur le partage de quelqu'un d'autre, et un certificat que cette machine n'a pas déjà. Désactivé par défaut par sécurité : un partage injoignable coûte vingt et une secondes et s'authentifie comme celui qui a lancé l'outil, et récupérer un certificat est une connexion à un tiers au milieu d'un simple listage. Sans lui, une signature est vérifiée contre ce qui est ici, et un résultat qui pourrait venir d'un défaut de recherche est signalé comme non lu plutôt que comme un verdict.", + "switch.force": "Sur kill, terminer le processus tout de suite sans demander poliment - l'aperçu montre alors une étape au lieu de deux. Sur snapshot create, remplacer un instantané déjà présent - un fichier qui n'est pas un instantané n'est jamais remplacé.", + "switch.restart": "Sur kill, remettre l'entrée en route une fois le processus disparu, avec tout ce qui le partageait.", + "switch.stop": "Sur start-type, et seulement à côté de disabled, arrêter l'entrée dans le même plan une fois le réglage écrit. Un type de démarrage change le prochain démarrage et rien maintenant, donc sans cette option une entrée en marche réglée sur désactivé continue de tourner.", + "switch.full": "Sur show, afficher aussi les champs réellement vides. Un champ que personne n'a pu lire est affiché dans tous les cas.", + "switch.components": "Sur license, transformer la mention en chaque composant de cet exécutable avec sa version, sa licence et son origine. Le même ensemble que porte la nomenclature publiée à côté du téléchargement, parce que les deux sont produites depuis un seul registre.", + "switch.json": "Le même document, lisible par une machine, sur la sortie standard.", + "switch.note": "Ce pour quoi l'instantané a été pris, conservé dans le fichier.", + "switch.exit-code": "Se terminer par le code 5 quand la configuration diffère - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. L'état d'exécution seul ne compte pas. Désactivé par défaut, pour qu'un script qui veut seulement les différences imprimées ne soit pas pris de court d'en trouver.", + "switch.live": "Comparer le fichier à cette machine telle qu'elle est maintenant, plutôt qu'à un second fichier.", + "switch.timing": "Combien de temps a pris chaque partie de la lecture, sur l'erreur standard.", + "switch.dry-run": "Afficher le plan et ne rien changer. C'est le même plan qu'exécute une vraie exécution - il n'y a pas de second chemin de code pour la vraie chose.", + "switch.dependents": "Mettre dans le plan les services qui cesseraient de fonctionner, comme des étapes à part entière.", + "switch.timeout": "Combien de temps une étape peut durer sans progrès avant d'être abandonnée, recompté à chaque fois que le service signale un progrès. Soixante secondes sauf indication contraire. Un service qui continue de signaler un progrès est surveillé aussi longtemps qu'il le faut. Le délai écoulé est la fin de la surveillance et non un échec, et le rapport dit où l'entrée a été laissée.", + + "field.name": "le nom du service, celui par lequel Windows l'identifie", + "field.display": "le nom affiché, tel que ce Windows l'écrit", + "field.description": "ce que l'entrée dit d'elle-même", + "field.type": "quel genre d'entrée c'est", + "field.peruser": "si c'est l'une des familles par utilisateur dont Windows fait une copie par session", + "field.status": "ce qu'elle fait en ce moment", + "field.start": "ce que le gestionnaire en fait au prochain démarrage", + "field.account": "le compte sous lequel elle s'exécute, tel que le gestionnaire l'écrit", + "field.pid": "le processus dans lequel elle s'exécute", + "field.trigger": "une condition qui la démarre ou l'arrête", + "field.path": "la ligne de commande que le gestionnaire lance", + "field.file": "si le fichier qu'elle exécute est sur le disque", + "field.signed": "ce que Windows pense de la signature du fichier, sans vérifier la révocation", + "field.publisher": "qui a signé le fichier - prouvé seulement par une signature approuvée", + "field.privilege": "un privilège que l'entrée demande", + "field.dependson": "ce dont celle-ci a besoin", + "field.requiredby": "ce qui cesse de fonctionner si celle-ci s'arrête", + "field.sidtype": "le type de SID du service", + "field.sddl": "le descripteur de sécurité, sous forme de texte", + "field.memory": "ce que consomme son processus", + "field.mismatch": "une configuration et un état qui ne concordent pas", + + "field.open.name": "texte", + "field.open.display": "texte", + "field.open.description": "texte", + "field.open.account": "texte, p. ex. localsystem", + "field.open.pid": "un nombre : 1234, >1000, 100-200", + "field.open.path": "texte", + "field.open.publisher": "texte", + "field.open.privilege": "texte, p. ex. SeDebugPrivilege", + "field.open.dependson": "un nom de service", + "field.open.requiredby": "un nom de service", + "field.open.sddl": "texte", + "field.open.memory": "une taille avec une unité : 500MB, >1GB, 100MB-1GB", + + "reserved.any": "il y a une valeur, quelle qu'elle soit", + "reserved.none": "il n'y a réellement aucune valeur - l'entrée n'en a pas", + "reserved.unreadable": "l'outil n'a pas pu lire ce champ, ou ne l'a pas lu, ce qui est une question que services.msc ne sait même pas poser" +} diff --git a/site/pages/404/fr.html b/site/pages/404/fr.html new file mode 100644 index 00000000..956c71cd --- /dev/null +++ b/site/pages/404/fr.html @@ -0,0 +1,30 @@ + + + + + +
+
+ 404 +

Cette page n'existe pas

+

L'adresse ne correspond à rien sur ce site. Rien n'a été supprimé pour en arriver là - les adresses ne changent pas ici, car une page déplacée casserait tous les liens qui y ont jamais pointé.

+ +
+
+ +
+
+

Ce que les gens venaient chercher

+
+

Téléchargement

Deux exécutables autonomes, ou un installeur.

+

Langage de requête

Chaque champ et chaque valeur sur lesquels chercher.

+

Référence CLI

Chaque option et chaque code de sortie.

+

Instantanés et dérive

Ce qui a changé sur cette machine depuis hier.

+

Questions et limites

Y compris ce que l'outil refuse par conception.

+

Le code source

Tout est sur GitHub sous GPL-3.0.

+
+
+
diff --git a/site/pages/404/page.json b/site/pages/404/page.json index 86f7d07e..62a066a8 100644 --- a/site/pages/404/page.json +++ b/site/pages/404/page.json @@ -6,6 +6,7 @@ "slug": { "en": "404", "pl": "404", - "de": "404" + "de": "404", + "fr": "404" } } diff --git a/site/pages/audit-windows-services/fr.html b/site/pages/audit-windows-services/fr.html new file mode 100644 index 00000000..fa864b37 --- /dev/null +++ b/site/pages/audit-windows-services/fr.html @@ -0,0 +1,64 @@ + + + + + +
+
+ Guide +

Auditer les services Windows

+

Un audit n'est pas une liste de ce qui se trouve sur la machine. C'est la différence entre ce qui s'y trouve et ce qui devait s'y trouver - et aucun Windows standard n'enregistre la seconde moitié.

+
+
+ +
+
+

Trois questions, et ce qui y répond

+
+
+

Qu'est-ce qui a changé depuis la construction de cette machine ?

+

Un instantané pris au déploiement, et une comparaison avec la machine cette nuit. La configuration est signalée à part de ce qui a simplement démarré ou s'est arrêté, de sorte que le seul type de démarrage que quelqu'un a changé n'est pas enterré sous quarante services qui se trouvent tourner.

+

bws snapshot diff baseline.json --live

+
+
+

Pourquoi la préproduction diffère-t-elle de la production ?

+

Prenez un instantané sur chacune et comparez les deux fichiers - n'importe où, sans qu'aucune des deux machines soit présente. Les fichiers portent le nom de la machine et le compte qui les a pris.

+

bws snapshot diff staging.json production.json

+
+
+

Qu'y a-t-il ici qui ne devrait pas y être ?

+

Des requêtes qui trouvent les formes qui valent un coup d'œil : un service dont l'exécutable a disparu, un service non signé, un service en marche bien que désactivé, un service qui demande des droits de débogage.

+

file:missing, signed:no, mismatch:running

+
+
+
+
+ +
+
+

La forme nocturne

+
# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - aucune dérive de configuration
+#   5 - la configuration a dérivé, et drift.json dit en quoi
+#   3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+

Le code de sortie 5 est ce qui fait de ceci un audit plutôt qu'un rapport que personne ne lit : la tâche est silencieuse jusqu'à ce que la machine dérive, et la nuit où cela arrive, quelqu'un est alerté.

+

Prenez la référence depuis une session avec élévation. Sans droits d'administrateur, le gestionnaire liste moins d'entrées et en refuse davantage parmi celles qu'il liste. L'instantané enregistre si le compte qui l'a pris était un administrateur, de sorte que la comparaison peut le dire au lieu de signaler comme supprimées des entrées que personne n'a supprimées - mais une référence à laquelle manque la moitié de la machine reste une référence à laquelle manque la moitié de la machine.

+
+
+ +
+
+

Ce que vaut un instantané comme preuve

+
    +
  • C'est du JSON avec un champ par ligne, il entre donc dans un dépôt et git diff le lit. Un auditeur qui n'a pas cet outil peut quand même lire le fichier, et un système de gestion de versions répond déjà au quand.
  • +
  • Il contient ce que le composant enfichable n'a jamais montré : le chemin de lancement et les arguments, le hachage et le signataire du fichier, les dépendances dans les deux sens, les déclencheurs, les privilèges requis, le type de SID et le descripteur de sécurité.
  • +
  • Il dit ce qu'il n'a pas pu lire. Un champ auquel cette session n'avait pas droit est enregistré comme non lu - jamais comme vide - de sorte qu'une comparaison ultérieure peut dire not compared au lieu de le déclarer discrètement inchangé.
  • +
  • C'est une description de la machine entière. Rangez-le en conséquence : il est écrit avec les autorisations que son répertoire a déjà, et l'outil ne restreint rien.
  • +
+ Comment fonctionnent les instantanés et les comparaisons +
+
diff --git a/site/pages/audit-windows-services/page.json b/site/pages/audit-windows-services/page.json index 8ef81e11..16b80ce5 100644 --- a/site/pages/audit-windows-services/page.json +++ b/site/pages/audit-windows-services/page.json @@ -7,6 +7,7 @@ "slug": { "en": "audit-windows-services", "pl": "audyt-uslug-windows", - "de": "windows-dienste-auditieren" + "de": "windows-dienste-auditieren", + "fr": "auditer-les-services-windows" } } diff --git a/site/pages/cli-reference/fr.html b/site/pages/cli-reference/fr.html new file mode 100644 index 00000000..1b2bafa8 --- /dev/null +++ b/site/pages/cli-reference/fr.html @@ -0,0 +1,194 @@ + + + + + + + +
+
+ Référence +

Référence de la ligne de commande

+

Chaque commande, chaque option et chaque code de sortie de bws, version {{version}}. bws --help fait foi et est plus long - cette page est la même surface, mise en forme pour être lue.

+
+
+ +
+
+

Les commandes

+

Onze commandes. snapshot est un nom et prend un mot après lui. tool est aussi un nom, et seul il liste les outils.

+
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
+bws show NAME [--full] [--follow-network] [--json] [--timing]
+bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
+bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
+bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
+bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
+bws history [NAME] [--json] [--timing]
+bws tool
+bws tool fix
+bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
+bws license [--components]
+bws --help
+bws --version
+

Une commande mal orthographiée se voit proposer celle que vous vouliez probablement, et l'exécution se termine avec le code 2 au lieu de faire quelque chose de proche de ce que vous avez demandé.

+
$ bws lst
+There is no command lst. Did you mean list?
+
+
+ +
+
+

Ce que fait chaque commande

+
+
+

list et show

+

list est la machine entière, affinée par --query. show est une entrée avec tout ce qu'on en sait - la signature, les privilèges, le descripteur de sécurité et la mémoire, tout lu à chaque fois, car sur une seule entrée cela coûte environ soixante millisecondes alors que sur la machine entière cela coûte une seconde. Les champs réellement vides sont omis sauf si vous passez --full. Un champ que personne n'a pu lire est affiché dans tous les cas, car l'omettre ressemblerait à une réponse.

+
+
+

stop, start et restart

+

Chacune construit un plan et l'exécute. --dry-run affiche le plan et ne change rien, --dependents y met les services qui cesseraient de fonctionner comme des étapes à part entière, et --timeout dit combien de temps une étape peut durer sans progrès. Les pilotes sont refusés plutôt que tentés, car arrêter un pilote du noyau n'est souvent pas réversible sans redémarrage.

+
+
+

kill - pour un service qui ne s'arrête pas

+

Elle demande au service de s'arrêter et termine le processus qui le porte seulement si cela ne marche pas, de sorte qu'une entrée qui s'arrête d'elle-même n'est jamais terminée. Terminer un processus emporte avec lui tout autre service qui y vit, qu'il se soit arrêté avant ou non, et l'aperçu les nomme et nomme le processus par son numéro. --force saute l'étape polie et l'aperçu montre alors une étape au lieu de deux. --restart remet tout en route ensuite.

+

Windows écrit cette idée autrement. --force sur Stop-Service veut dire « même si quelque chose en dépend », ce que fait ici --dependents. C'est pourquoi c'est une commande à part entière et non une option de stop.

+
+
+

start-type - un réglage, pas un mouvement

+

Elle dit ce que le gestionnaire fera d'une entrée au prochain démarrage, et sans --stop elle ne déplace rien : une entrée qui tourne continue de tourner, une entrée arrêtée reste arrêtée, et le plan le dit. disabled mérite qu'on s'y arrête, car il empêche le gestionnaire de démarrer l'entrée tout court, y compris à la demande pour quelque chose d'autre qui en a besoin. delayed est automatique, démarré un peu après les autres entrées automatiques - le mot que start:delayed interroge dans une requête - et Windows le refuse pour une entrée appartenant à un groupe d'ordre de chargement, ce que le plan dit avant que quoi que ce soit n'arrive. Chacune des quatre écrit si l'entrée démarre tard, comme le fait sc.exe. --stop, à côté de disabled seulement, arrête l'entrée dans le même plan une fois le réglage écrit.

+
+
+

snapshot create et snapshot diff

+

create lit toujours les signatures et les hachages, car un instantané est conservé et comparé plus tard, et un instantané sans eux comparé à un autre avec eux serait traité comme si la machine avait changé. diff dit ce qui a changé en passant du premier fichier au second, ou d'un fichier à cette machine avec --live. La page des instantanés donne le format et le raisonnement.

+
+
+

history - qui l'a changé, d'après le journal Système

+

Les changements de type de démarrage et les installations tirés du journal Système, les plus récents d'abord, avec le compte que Windows a enregistré. La première ligne dit jusqu'où remonte le journal et s'il a été effacé, car un historique n'est aussi long que le journal. Avec un nom, ce sont les changements de type de démarrage de ce service - les installations ne sont listées que sans nom, car Windows enregistre une installation sous le nom affiché et jamais sous le nom du service. Un compte est nommé là où cette machine peut le nommer d'elle-même et affiché sous forme de SID sinon, et les types de démarrage viennent dans les mots que Windows a écrits.

+
+
+

tool - des réponses toutes faites aux problèmes courants

+

Les mêmes outils que la fenêtre montre sur son onglet Tools. bws tool les liste et bws tool fix liste les réparations rapides : printer, sound, indexing et search, chacune le redémarrage d'un service Windows avec ce qui en dépend, choisies parce que les pages de dépannage de Microsoft elles-mêmes le suggèrent. bws tool fix printer est exactement bws restart Spooler --dependents - le même plan, la même sortie et les mêmes codes de sortie - et comme toute commande ici qui change quelque chose, il ne demande pas d'abord, donc --dry-run est le moyen de regarder avant l'exécution.

+
+
+

license - ce qu'il y a dans le fichier téléchargé

+

Elle ne lit rien du tout - ni gestionnaire de services, ni disque, ni réseau - et répond depuis un registre compilé dans l'exécutable. --components transforme la mention en chaque composant avec sa version, sa licence et son origine. Le même ensemble que porte la nomenclature publiée à côté du téléchargement, parce que les deux sont produites depuis un seul registre, et c'est la raison pour laquelle cela vaut la peine : le programme est un fichier autonome, il n'y a donc rien à côté qu'un scanner puisse lire.

+
+
+
+
+ +
+
+

Exemples

+

Les plans ci-dessous ont été vérifiés avec --dry-run contre le programme que décrit cette page. Une commande qui change quelque chose ne demande pas d'abord, donc --dry-run est le moyen de regarder avant l'exécution. Spooler représente n'importe quel service - mettez à sa place le nom du vôtre.

+
+

Chercher et lire

+
bws list                                       chaque service et pilote de cette machine
+bws list --query "start:auto !status:running"  ce qui devrait tourner et ne tourne pas
+bws list --query "status:running" --memory     ce que consomme le processus de chaque entrée en marche
+bws show Spooler                               tout ce qu'on sait d'une entrée
+bws show Spooler --full                        aussi les champs réellement vides
+

Regarder d'abord, changer ensuite

+
bws restart Spooler --dry-run                le plan, et rien d'autre
+bws restart Spooler --dependents             le redémarrer avec ce qui en dépend
+bws stop Spooler --dependents --timeout 120  autoriser deux minutes par étape sans progrès
+bws start-type WSearch delayed --dry-run     le démarrer un peu après les autres entrées automatiques
+bws start-type Spooler disabled --stop       le désactiver et l'arrêter en un seul plan
+

Un service qui ne s'arrête pas

+
bws kill Spooler --dry-run          le processus, et chaque service qui y vit
+bws kill Spooler --restart          terminer le processus seulement si un arrêt échoue, puis tout remettre en route
+bws kill Spooler --force --dry-run  une étape au lieu de deux : le processus terminé aussitôt
+

Instantanés et dérive

+
bws snapshot create before.json --note "before the patch"  figer la machine, avec une note conservée dedans
+bws snapshot diff before.json after.json                   deux fichiers - deux jours, ou deux machines
+bws snapshot diff before.json --live                       le fichier contre cette machine telle qu'elle est maintenant
+bws snapshot diff before.json --live --exit-code           pareil, se terminant par 5 si la configuration a dérivé
+

Qui l'a changé

+
bws history          chaque changement de type de démarrage et installation que contient le journal Système
+bws history Spooler  les changements de type de démarrage d'un service
+bws history --json   la même chose sous forme de document, avec le journal et les changements
+

Réparations rapides

+
bws tool                      les outils qui existent
+bws tool fix                  les réparations rapides, et le service derrière chacune
+bws tool fix sound --dry-run  le plan de redémarrage des deux services audio
+bws tool fix printer          redémarrer le spouleur d'impression avec ce qui en dépend
+

Ce qu'il y a dans le fichier

+
bws license --components  chaque composant, sa version, sa licence et son origine
+bws --version             la version de cet exécutable
+

Dans un script PowerShell

+
# les entrées qui devraient tourner et ne tournent pas, sous forme d'objets
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# les fichiers non signés, dans un tableur
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# ce dont un service a besoin
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# une vérification nocturne qui se branche sur le code de sortie
+bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
+switch ($LASTEXITCODE) {
+  0 { 'no configuration drift' }
+  5 { 'the configuration drifted' }
+  default { "no clean answer, exit code $LASTEXITCODE" }
+}
+

Dans cmd et un fichier batch

+
rem une seconde commande seulement si la première ne s'est pas terminée proprement
+bws restart Spooler || echo the restart did not end cleanly
+
+rem dans un fichier batch avec l'expansion différée activée, le ! a besoin d'un accent circonflexe
+bws list --query "start:auto ^!status:running"
+
+
+
+ +
+
+

Options

+

{{switch_count}} au total. La troisième colonne donne les commandes auxquelles chacune appartient - une option passée à une commande qui n'en a pas l'usage est une erreur avec cette liste dedans, plutôt qu'un indicateur ignoré en silence.

+ {{table:switches}} +
+
+ +
+
+

Codes de sortie

+

{{exit_code_count}} fins, et chacune est une chose différente à faire pour un script. Les données vont sur la sortie standard et tout le reste sur l'erreur standard, de sorte que bws list --json | jq fonctionne et qu'un avertissement n'atterrit jamais dans votre JSON.

+

Tout document JSON est de l'ASCII pur : une lettre hors de l'ASCII est écrite comme une séquence d'échappement de six caractères que tout lecteur JSON retransforme en lettre, de sorte que bws list --json > file.json est de l'UTF-8 valide et que | ConvertFrom-Json le lit correctement quelle que soit la page de codes de la console. Dans le texte qu'une personne lit, un caractère qui déplacerait le terminal au lieu de s'imprimer - une tabulation, un saut de ligne, une séquence d'échappement, un forçage de direction - est affiché sous la forme de son point de code, <U+001B>.

+

-- termine les options, de sorte qu'un service dont le nom commence par un tiret peut quand même être nommé : bws show -- -odd. Les lignes de commande que l'outil vous remet sont écrites pour PowerShell : un nom contenant une espace va entre guillemets doubles, que cmd lit de la même façon, et un nom que PowerShell développerait à l'intérieur, comme MSSQL$SQLEXPRESS, va entre guillemets simples.

+ {{table:exit-codes}} +

Ctrl+C a trois niveaux, chacun disant ce que coûte le suivant. Le premier cesse d'avancer et remet quand même en place ce qui a été pris, le deuxième laisse les choses en l'état et imprime quand même le rapport, le troisième termine le processus. Une exécution arrêtée à la main se termine par 4 même si chaque étape était arrivée.

+

Fermer la fenêtre de la console compte comme le premier Ctrl+C. Windows donne cinq secondes à un programme après cela, et pendant ce temps celui-ci cesse d'avancer et remet en place ce qu'il avait arrêté. Se déconnecter et éteindre le terminent sans aucun avertissement auquel il pourrait réagir, et une session distante interrompue peut le faire aussi.

+
+
+ +
+
+

Dans une tâche planifiée

+

La forme pour laquelle cet outil a été conçu : figer la machine quand elle est réputée saine, puis demander chaque nuit si elle l'est encore.

+
# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - aucune dérive de configuration
+#   5 - la configuration a dérivé, et drift.json dit en quoi
+#   3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+

La fenêtre est l'autre moitié du même moteur : {{archive_window}} la contient, et la page de téléchargement dit ce qu'est chaque archive.

+
+
+ +
+
+

L'argument de la fenêtre

+

BetterWindowsServices.exe prend un argument destiné à une personne : --catalogue ouvre une feuille de développeur montrant chaque composant de la fenêtre dans chaque état, et ne lit rien sur votre machine. Un second, --carry, est la façon dont une fenêtre transmet ce qu'elle montrait à la copie d'elle-même qu'elle relance en administrateur. Personne ne le tape, et tout ce qu'il contient que cette fenêtre n'aurait pas pu écrire est refusé.

+
+
diff --git a/site/pages/cli-reference/page.json b/site/pages/cli-reference/page.json index 22bb885d..551e87da 100644 --- a/site/pages/cli-reference/page.json +++ b/site/pages/cli-reference/page.json @@ -7,6 +7,7 @@ "slug": { "en": "cli-reference", "pl": "dokumentacja-cli", - "de": "cli-referenz" + "de": "cli-referenz", + "fr": "reference-cli" } } diff --git a/site/pages/download/fr.html b/site/pages/download/fr.html new file mode 100644 index 00000000..0085690a --- /dev/null +++ b/site/pages/download/fr.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Téléchargement +

Décompresser et lancer, ou installer

+

Version {{version}}. Les archives n'ont pas besoin d'installeur et n'écrivent rien dans le Registre, et consulter ne demande aucun droit d'administrateur. Un installeur signé place à la place les deux programmes sur toute la machine. Libre et gratuit sous GPL-3.0.

+ +
+
+ +
+
+

Ce que contient la version

+
+ + + + + + + +
FichierCe que c'est
{{archive_window}}La fenêtre : BetterWindowsServices.exe, un exécutable autonome avec son propre runtime .NET à l'intérieur
{{archive_cli}}La ligne de commande : bws.exe, un exécutable autonome, pour les scripts, les tâches planifiées et la CI
{{archive_installer}}L'installeur : les deux programmes dans Program Files pour chaque compte de la machine, la fenêtre dans le menu Démarrer et bws dans le PATH de la machine
+
+

Prenez l'un ou l'autre, ou les deux - ce sont deux clients du même moteur et aucun n'a besoin de l'autre. Sur un serveur, la ligne de commande est la plus petite des deux et fait tout ce que fait la fenêtre.

+

L'installeur contient exactement ce que contiennent les deux archives. Il s'installe en silence avec msiexec /i {{archive_installer}} /qn, une version plus récente s'installe par-dessus une plus ancienne, et il ne ferme rien de ce qui tourne - fermez donc la fenêtre et tout bws en cours avant la mise à jour, car une copie laissée en marche peut s'arrêter avec une erreur. La désinstallation depuis Paramètres, Applications supprime les programmes, l'entrée du menu Démarrer et l'entrée du PATH, et ne touche pas à vos propres fichiers.

+

Les exécutables portent une signature Authenticode, de sorte que Windows nomme l'éditeur au lieu d'avertir d'un éditeur inconnu.

+
+
+ +
+
+

Prérequis

+
    +
  • Windows 10 version 1809 ou ultérieure, ou Windows Server 2019 ou ultérieur. 64 bits uniquement - un processus 32 bits lit des chemins et des clés de Registre redirigés, ce qui donnerait discrètement de mauvaises réponses.
  • +
  • Aucun .NET à installer. Les deux exécutables portent leur propre runtime .NET.
  • +
  • Des droits d'administrateur pour modifier quoi que ce soit. Lire, chercher, les instantanés et les comparaisons fonctionnent sans eux, avec moins d'entrées visibles et l'outil qui le dit en haut au lieu de faire comme si la liste était la machine entière.
  • +
+

La fenêtre garde un fichier à elle - la disposition dans laquelle vous avez laissé la liste - sous %APPDATA%\BetterWindowsServices. Un instantané va là où vous dites à bws snapshot create de le mettre, et dans le répertoire courant quand vous ne dites rien.

+

Le programme parle anglais. La fenêtre lit un fichier de langue, languages\gui.<code>.json, placé à côté d'elle et choisi selon la langue de Windows, sans option. Une traduction est donc une contribution qui peut s'ajouter sans recompiler - CONTRIBUTING.md explique comment.

+
+
+ +
+
+

Antivirus et EDR

+

Cet outil fait ce que fait un administrateur avec les services, et une partie de cela est ce que surveillent les logiciels de sécurité.

+

Il arrête et démarre des services, il peut terminer le processus derrière l'un d'eux, et il lit le descripteur de sécurité et les privilèges requis de chaque service. Un EDR qui signale un processus terminant svchost.exe fait son travail, et un arrêt forcé ici peut ressembler exactement à cela.

+

Ce qu'il ne fait pas, pour que vous puissiez vérifier l'affirmation : il n'injecte rien dans aucun processus, il ne compresse ni n'obfusque rien, il n'installe ni service ni pilote et ne laisse rien en marche, et il n'ouvre aucune connexion réseau. Il est libre sous GPL-3.0 et vous pouvez compiler vous-même les deux exécutables.

+

Si votre politique exige une exclusion, excluez les deux exécutables par fichier plutôt qu'un dossier. La seule chose à traiter avec le même soin que l'outil lui-même est un fichier d'instantané : il décrit la machine entière.

+
+
+ +
+
+

Compiler depuis les sources

+

SDK .NET 10, sous Windows.

+
git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+

Certains tests lisent le vrai gestionnaire de contrôle des services de la machine sur laquelle ils tournent et comparent ce que dit cet outil avec ce que dit sc.exe. Ils sont en lecture seule. Les exécutables à fichier unique que contiennent les versions sont ces deux publications, chacune un fichier avec le runtime à l'intérieur :

+
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+

Ils atterrissent sous les noms bws.exe et BetterWindowsServices.exe dans bin/Release/.../win-x64/publish/ de chaque projet. Les fichiers .pdb à côté sont des symboles de débogage, et rien n'en a besoin pour s'exécuter.

+
+
+ +
+
+

Ce que coûte son fonctionnement

+

Mesuré sur une machine de 810 services. Vos chiffres seront différents - le nombre de services, le disque et le processeur les font tous varier.

+
+

Environ un quart de seconde

pour que bws list lise toute la machine.

+

Environ huit dixièmes de seconde

du lancement de la fenêtre à la liste affichée à l'écran.

+

Environ 100 Mo

pour la fenêtre - la moitié étant le framework d'interface utilisateur de Windows, avant qu'aucun code propre à cet outil ne s'exécute.

+

Environ 16 Mo

pour la ligne de commande sur la même machine.

+
+
+
diff --git a/site/pages/download/page.json b/site/pages/download/page.json index 3df4f679..b46da23b 100644 --- a/site/pages/download/page.json +++ b/site/pages/download/page.json @@ -7,6 +7,7 @@ "slug": { "en": "download", "pl": "pobieranie", - "de": "download" + "de": "download", + "fr": "telechargement" } } diff --git a/site/pages/faq/fr.html b/site/pages/faq/fr.html new file mode 100644 index 00000000..b6fd6107 --- /dev/null +++ b/site/pages/faq/fr.html @@ -0,0 +1,78 @@ + + + + + +
+
+ Questions +

Questions et limites

+

Un outil qui ne couvre pas quelque chose en silence est pire qu'un outil qui dit ce qu'il ne sait pas faire. Les limites sont aussi sur cette page, en deux groupes : ce qu'il refuse par conception, et ce que fait Windows et que cet outil rapporte tel quel.

+
+
+ +
+
+
+
+

En quoi est-ce différent de sc.exe, Get-Service ou services.msc ?

+

sc query et Get-Service disent ce qui tourne. services.msc permet de le changer, une ligne à la fois, sans moyen de poser une question et sans trace ensuite. Cet outil pose la question (start:auto !status:running), montre le plan avant d'agir, et garde un instantané que vous pouvez comparer une semaine plus tard. Quand il n'est pas d'accord avec sc.exe sur un service, c'est un bogue - une partie de la suite de tests exécute les deux et les compare entrée par entrée. La comparaison plus longue est ici.

+
+
+

A-t-il besoin d'Internet ?

+

Jamais. Pas de télémétrie, pas de vérification de mise à jour, pas de rapport de plantage, pas de compte, pas de client de quoi que ce soit. La seule fois où il peut toucher un réseau, c'est quand vous passez --follow-network : il peut alors regarder un chemin de lancement sur le partage d'une autre machine et laisser Windows récupérer un certificat que cette machine n'a pas déjà - désactivé par défaut, et l'aide dit pourquoi. Les boutons GitHub et Donate de la fenêtre et la page de son menu Help transmettent chacun une adresse fixe à votre navigateur quand vous les pressez, et c'est votre navigateur qui se connecte.

+
+
+

A-t-il besoin de droits d'administrateur ?

+

Pour consulter, non. Pour modifier, oui. Sans eux, le gestionnaire montre moins d'entrées et en refuse davantage, et les deux moitiés le disent en haut au lieu de faire comme si la liste était la machine entière. La fenêtre propose Restart as admin. Elle ne s'élève jamais d'elle-même.

+
+
+

Est-il gratuit ? Puis-je l'utiliser au travail ?

+

Oui aux deux. GPL-3.0, sans condition cachée. Un instantané que vous prenez est votre fichier.

+
+
+

Va-t-il casser mon serveur ?

+

Pas de lui-même. Rien n'est changé sans un plan que vous avez vu, les pilotes sont refusés, et un plan qui arrêterait quelque chose dont la machine a besoin le dit. Ce dont il ne peut pas vous protéger, c'est d'exécuter un plan que vous n'avez pas lu. La liste des services dont la machine a besoin est une liste de départ de sept - les deux moitiés de RPC et le lanceur DCOM, le gestionnaire de comptes, l'isolation des clés, le gestionnaire de session et le Plug and Play - et le Bureau à distance n'y figure pas, donc dans une session distante, lisez le plan.

+
+
+

Est-ce un produit Microsoft ?

+

Non. {{product}} est un projet libre indépendant et n'est ni affilié à Microsoft, ni approuvé, ni parrainé par Microsoft. Windows est une marque du groupe de sociétés Microsoft.

+
+
+

Le programme existe-t-il dans ma langue ?

+

Non - le programme parle anglais, et c'est pour cela que ce site est traduit. La fenêtre lit un fichier de langue, languages\gui.<code>.json, placé à côté de l'exécutable et le choisit selon la langue de Windows, sans option, de sorte qu'une traduction est une contribution qui peut s'ajouter sans recompiler le programme. Les noms des services dans la liste sont ce que dit votre Windows - dans la langue dans laquelle votre Windows est configuré.

+
+
+

Pourquoi la fenêtre est-elle sombre quand mon Windows est clair ?

+

Elle est sombre et le reste quel que soit le réglage de Windows, y compris un thème à contraste élevé. C'est vérifié et non supposé - elle garde ses propres couleurs et reste lisible, et elle ne suit pas ce réglage.

+
+
+
+
+ +
+
+

Par conception

+
    +
  • Machine locale uniquement. La gestion à distance n'est pas dans cette version. Pour comparer deux machines, prenez un instantané sur chacune et comparez les deux fichiers.
  • +
  • Windows uniquement, 64 bits uniquement, Windows 10 1809 ou Windows Server 2019 et ultérieurs.
  • +
  • Les opérations sur les pilotes sont refusées plutôt que tentées, car arrêter un pilote du noyau n'est souvent pas réversible sans redémarrage.
  • +
  • L'outil n'élève pas ses propres privilèges. Quand le gestionnaire refuse, il le dit et se termine avec le code de sortie 3. La fenêtre propose de se relancer en administrateur, et ne fait rien d'autre à ce sujet.
  • +
  • La révocation des certificats n'est pas vérifiée. Cela demanderait d'atteindre le réseau, et cet outil ne le fait jamais. Trusted signifie donc que la chaîne était valide sur cette machine, pas que personne n'a révoqué le certificat depuis.
  • +
  • La fenêtre décompresse une partie du framework d'interface utilisateur de Windows avant de démarrer. En fichier unique, elle porte quelques bibliothèques natives que Windows ne sait charger que depuis le disque. Sans droits d'administrateur, elle les écrit, au premier démarrage de chaque version, dans un dossier .net sous le dossier temporaire du compte et les charge de là. Avec des droits d'administrateur, elle utilise à la place ProgramData\BetterWindowsServices sur le lecteur Windows - un dossier qu'elle crée de façon que seuls les administrateurs puissent le modifier, et qu'elle vérifie à chaque démarrage. Si ce dossier ne peut pas être créé, ou si d'autres peuvent le modifier, la fenêtre ne démarre pas et dit quel dossier et que faire. S'y installer signifie qu'une fenêtre avec élévation se relance une seconde fois, ce qui prend une fraction de seconde, et chaque version y laisse ses bibliothèques (environ 8 Mo) jusqu'à ce que quelqu'un supprime le dossier. La ligne de commande ne porte aucune bibliothèque de ce genre et ne décompresse rien.
  • +
  • Une session avec élévation nomme les paramètres .NET dont elle hérite au lieu de les refuser. Un profileur, un commutateur de trace ou de vidage, ou un port de diagnostic défini dans l'environnement ne peut pas être désactivé depuis l'intérieur d'un programme .NET, donc avec des droits d'administrateur les deux moitiés listent ceux qu'elles trouvent. Les crochets de démarrage sont désactivés purement et simplement.
  • +
+
+
+ +
+
+

Ce que fait Windows et que cet outil rapporte tel quel

+
    +
  • Un service hébergé dans svchost a un chemin de lancement qui nomme l'hôte, de sorte que le fichier est là et qui l'a signé disent tous deux moins que pour un service doté de son propre processus.
  • +
  • Un fichier ayant à la fois sa propre signature et une entrée de catalogue Windows peut nommer deux signataires différents. L'éditeur affiché est celui qui est dans le fichier - celui qui reste le même quand on regarde le fichier sur une autre machine - et il peut différer de ce que rapporte PowerShell.
  • +
  • Sans droits d'administrateur, le gestionnaire liste moins d'entrées et en refuse davantage parmi celles qu'il liste. Les deux moitiés le disent en haut, et un instantané l'enregistre, car comparer un instantané avec élévation à un autre pris sans droits signalerait sinon comme supprimées des entrées que personne n'a supprimées.
  • +
+

Un problème trouvé, ou un service que cet outil rapporte autrement que sc.exe ? Le suivi des tickets est ouvert, et une comparaison entre les deux est ce qu'il y a de plus utile à y coller.

+
+
diff --git a/site/pages/faq/page.json b/site/pages/faq/page.json index b80b4b25..77943af1 100644 --- a/site/pages/faq/page.json +++ b/site/pages/faq/page.json @@ -8,6 +8,7 @@ "slug": { "en": "faq", "pl": "faq", - "de": "faq" + "de": "faq", + "fr": "faq" } } diff --git a/site/pages/home/fr.html b/site/pages/home/fr.html new file mode 100644 index 00000000..5aae3cf6 --- /dev/null +++ b/site/pages/home/fr.html @@ -0,0 +1,200 @@ + + + + + + + +
+
+
+

Cherchez vos services Windows, voyez chaque changement avant son exécution et découvrez ce qui a dérivé depuis hier

+

{{product}} est services.msc reconstruit pour celles et ceux qui administrent des machines Windows - une fenêtre et une ligne de commande sur un seul moteur. Posez une question à la machine au lieu de faire défiler huit cents lignes. Voyez ce qu'un changement va faire avant de valider quoi que ce soit. Et ce que services.msc n'a jamais eu : figer chaque service dans un fichier, et demander une semaine plus tard ce qui a changé.

+ +
    +
  • Libre et gratuit, GPL-3.0
  • +
  • Un seul fichier, ou un installeur
  • +
  • Aucun droit d'administrateur pour consulter
  • +
  • Ne contacte jamais Internet
  • +
+
+
+ La fenêtre avec cinq entrées sélectionnées et le plan de leur démarrage affiché au-dessus de la liste : cinq étapes, une remarque indiquant que deux d'entre elles sont déjà dans cet état, une ligne bws start pour chaque entrée et le bouton Start 5 entries. +
Des entrées sélectionnées, un plan affiché avant que quoi que ce soit n'arrive, et la ligne bws qui demande exactement la même chose. Le programme parle anglais - la fenêtre lit un fichier de langue placé à côté d'elle, une traduction est donc possible sans recompilation.
+
+
+
+ + +
+
+ Une demi-minute avec l'outil +

À quoi ça ressemble à l'usage

+

Une vraie session, sur un Windows installé en polonais - les noms affichés viennent de Windows, ils sont donc dans sa langue. La fenêtre elle-même parle anglais.

+
+ Quatre entrées sélectionnées et le plan de leur démarrage, un redémarrage forcé du Local Session Manager dont le plan avertit que la machine ne fonctionne pas sans lui et demande son nom avant que le bouton agisse, les questions de départ sous le champ de recherche vide, et le spouleur d'impression trouvé en tapant une partie de son nom, puis démarré. +
Quatre entrées sélectionnées et le plan de leur démarrage, un redémarrage forcé qui demande le nom d'un service dont la machine a besoin, les questions sous un champ de recherche vide, et le spouleur d'impression trouvé en tapant puis démarré.
+
+
+
+ L'écran d'accueil : trois cartes de chiffres sur cette machine - les services en cours d'exécution, les services à démarrage automatique qui ne se sont pas lancés, et les services à démarrage automatique dont le fichier a disparu - et un bouton Show the list. +
Elle s'ouvre sur quelques chiffres concernant cette machine. Chacun est une question - cliquez dessus et la question va dans le champ de recherche.
+
+
+ La liste des services avec les trois listes au-dessus du champ de recherche, un champ de recherche vide, les boutons de filtre ouverts en lignes pour l'état, le type de démarrage, la signature, les désaccords et les déclencheurs, et la liste en dessous. +
Les boutons de filtre écrivent dans le champ de recherche, de sorte que ce sur quoi vous avez cliqué est une requête que vous pouvez lire et modifier.
+
+
+
+
+ +
+
+ Pourquoi cet outil existe +

services.msc a à peine changé depuis Windows 2000

+

Les administrateurs y passent des heures chaque semaine à se heurter aux mêmes murs.

+
+
    +
  • Pas de recherche. Le seul moyen de naviguer est de sauter à la première lettre d'un nom affiché.
  • +
  • Pas de filtrage. Impossible de demander montre-moi ce qui est réglé pour démarrer automatiquement et ne tourne pas.
  • +
  • Une ligne à la fois. Redémarrer douze services, c'est douze clics droits et douze attentes.
  • +
  • « Arrêt en cours... » pour toujours, sans autre issue que le Gestionnaire des tâches et une devinette sur le processus.
  • +
  • Pas d'historique. Personne ne sait qui a réglé ce type de démarrage sur Désactivé, ni quand.
  • +
  • Des données cachées. Le processus, les déclencheurs, les privilèges, le descripteur de sécurité, qui a signé l'exécutable - tout cela demande sc.exe de mémoire, ou le Registre.
  • +
  • Pas d'équivalent en ligne de commande. sc.exe a une syntaxe des années quatre-vingt-dix, et le Get-Service fourni avec Windows, dans Windows PowerShell 5.1, n'affiche pas le compte sous lequel un service s'exécute, encore moins sa description. PowerShell 7 affiche les deux et s'installe séparément.
  • +
+
+

Les autres outils n'en règlent chacun qu'une partie

+

Process Hacker et System Informer affichent une liste riche et peuvent tuer un processus de force, mais n'ont ni audit ni ligne de commande. sc.exe et PsService peuvent tout faire et ne vous disent rien. Les cmdlets *-Service de PowerShell sont scriptables et superficielles.

+

Personne ne combine une liste où l'on peut chercher, un aperçu avant chaque changement et une trace de ce qui a changé au fil du temps - et cette trace est la raison de garder cet outil sur une machine après le premier après-midi.

+ La comparaison complète +
+
+
+
+ +
+
+ Ce qu'il fait +

Une fenêtre et une ligne de commande sur un seul moteur

+
+

Demander, au lieu de faire défiler

start:auto !status:running veut dire ce qui devrait tourner et ne tourne pas. Un seul langage, dans le champ de recherche et dans bws list --query, avec les champs proposés pendant la saisie.

+

Montrer le plan avant que quoi que ce soit n'arrive

Chaque arrêt, démarrage, redémarrage et changement de type de démarrage est prévisualisé avec les services qu'il entraîne dans sa chute, et l'aperçu est ce qui s'exécute.

+

Dire ce qui a dérivé, et qui l'a changé

bws snapshot create fige la machine dans un fichier, et bws snapshot diff dit ce qui a changé depuis, la configuration à part de ce qui a simplement démarré ou s'est arrêté. bws history dit, d'après le journal Système, qui a changé un type de démarrage et qui a installé un service. La fenêtre fait les trois sous Audit....

+

Réparer un problème courant en un clic

L'onglet Tools et bws tool fix redémarrent le service derrière une imprimante qui n'imprime pas, un son disparu ou une recherche bloquée, avec ce qui en dépend, par le même plan que tout le reste.

+

Arrêter un service qui ne s'arrête pas

Il demande poliment d'abord et ne termine le processus que si cela échoue, en nommant chaque autre service qui y vit.

+

Montrer ce que services.msc cache

Qui a signé l'exécutable et si Windows lui fait confiance, les déclencheurs, les privilèges, le descripteur de sécurité, le processus et sa mémoire. En colonnes, et comme critères de recherche.

+

Dire quand il n'a pas pu lire quelque chose

Un champ qu'il n'a pas pu lire est signalé comme non lu, jamais affiché comme vide. Un instantané pris sans droits d'administrateur le dit dans le fichier lui-même.

+

S'intégrer aux scripts

--json sur chaque commande, un code de sortie pour chaque fin, et 5 quand une comparaison trouve une dérive.

+

Tourner depuis un seul fichier, hors ligne

Décompressez et lancez, ou installez-le pour toute la machine. Aucun .NET à installer, et il ne contacte jamais Internet. Consulter ne demande aucun droit d'administrateur. GPL-3.0.

+
+
+
+ +
+
+ Ce que services.msc n'a jamais fait +

Ce qui a changé depuis hier

+

Un instantané est la machine entière à un moment donné - chaque service et chaque pilote, avec son type de démarrage, son compte, son chemin de lancement, le hachage et le signataire de son fichier, ses dépendances, ses déclencheurs, ses privilèges et son descripteur de sécurité. C'est du JSON avec un champ par ligne, il entre donc dans un dépôt et git diff le lit.

+
+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
    +
  • La configuration et l'état d'exécution sont signalés séparément. Deux instantanés pris à un jour d'intervalle diffèrent par ce qui se trouve tourner, et presque rien de cela n'est une dérive - le type de démarrage qui a changé est la ligne à lire.
  • +
  • Ce qui n'a pas pu être comparé est listé, pas caché. Un champ qu'un instantané n'a jamais lu ressort comme not compared, de sorte qu'une comparaison qui dit rien n'a changé signifie que rien n'a changé dans ce que les deux côtés pouvaient voir.
  • +
  • --exit-code se termine par 5 quand la configuration diffère, de sorte qu'une tâche planifiée peut prendre un instantané au déploiement et alerter quelqu'un la première nuit où la machine dérive.
  • +
  • Deux machines, deux fichiers. Prenez un instantané en préproduction et un en production, et comparez-les n'importe où.
  • +
+
+ Comment fonctionnent les instantanés et la dérive +
+
+ +
+
+ Rien n'arrive sans plan +

L'aperçu est l'exécution

+

Toute opération qui écrit construit d'abord un plan, et ce même plan est l'aperçu, la cascade des services dépendants, le refus avant que vous validiez quoi que ce soit, la ligne de commande qui demande la même chose, et le chemin du retour ensuite.

+
+
$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt  (2 steps)
+  1. stop  vmms      (would break otherwise)
+  2. stop  Winmgmt   (asked for)
+
+Warnings:
+  - Stopping Winmgmt also stops one other entry: vmms
+  - Winmgmt starts automatically, so it will be back after the next restart.
+
    +
  • Lancez-le sans --dry-run et ce sont ces étapes, dans cet ordre, avec les mêmes raisons à côté. Il n'y a pas de second chemin de code pour la vraie exécution.
  • +
  • Ce qui tombe avec lui est dans le plan. Les services qui cesseraient de fonctionner sont des étapes à part entière, et un plan qui arrêterait quelque chose dont la machine a besoin le dit dans ses avertissements.
  • +
  • Un refus vient avant le bouton. Un pilote, un service pour lequel le gestionnaire n'accepte pas d'arrêt, un processus que le système protège - refusés à la construction du plan, avec la raison. La fenêtre grise le bouton et dit pourquoi à côté.
  • +
  • L'arrêt forcé se fait en deux étapes, et la seconde est conditionnelle. bws kill demande au service de s'arrêter et ne termine son processus que si cela ne marche pas, en nommant chaque autre service qui y vit.
  • +
+
+ Quand un service ne s'arrête pas +
+
+ +
+
+ Deux minutes avec l'outil +

Depuis la ligne de commande

+

Le même moteur que la fenêtre, pour les scripts, les tâches planifiées et la CI. Les données vont sur la sortie standard et tout le reste sur l'erreur standard, de sorte que bws list --json | jq fonctionne et qu'un avertissement n'atterrit jamais dans votre JSON.

+
bws list --query "start:auto !status:running"     ce qui devrait tourner et ne tourne pas
+bws list --query "file:missing"                   les services dont l'exécutable a disparu
+bws list --query "signed:no peruser:no"           non signés, sans les copies par session
+bws show Spooler                                  tout ce qu'on sait d'une entrée
+bws stop Winmgmt --dry-run --dependents           ce que son arrêt entraînerait
+bws kill Spooler --dry-run                        ce que la fin de son processus emporterait
+bws start-type Spooler manual --dry-run           ce que ferait le retrait du démarrage automatique
+bws snapshot create before.json                   figer la machine avant un changement
+bws snapshot diff before.json --live --exit-code  ce qui a changé depuis, 5 si la configuration a changé
+bws history Spooler                               qui a changé son type de démarrage, et quand
+bws tool fix printer --dry-run                    ce que ferait la réparation rapide d'une imprimante bloquée
+ Chaque commande, option et code de sortie +
+
+ +
+
+ Se le procurer +

Décompresser et lancer, ou installer

+

Windows 10 1809 ou Windows Server 2019 et ultérieurs, 64 bits. Les archives n'ont pas besoin d'installeur et n'écrivent rien dans le Registre, et consulter ne demande aucun droit d'administrateur. Modifier quoi que ce soit demande une session avec élévation, et les deux moitiés le disent au lieu d'échouer en silence - la fenêtre propose Restart as admin.

+
+ + + + + + + +
FichierCe que c'est
{{archive_window}}La fenêtre, un exécutable autonome - aucun .NET à installer
{{archive_cli}}La ligne de commande, un exécutable autonome, pour les scripts et la CI
{{archive_installer}}L'installeur : les deux programmes pour chaque compte de la machine, la fenêtre dans le menu Démarrer et bws dans le PATH
+
+

Les exécutables portent une signature Authenticode, de sorte que Windows nomme l'éditeur au lieu d'avertir d'un éditeur inconnu.

+ +
+
diff --git a/site/pages/home/page.json b/site/pages/home/page.json index f944a497..43be65de 100644 --- a/site/pages/home/page.json +++ b/site/pages/home/page.json @@ -7,6 +7,7 @@ "slug": { "en": "", "pl": "", - "de": "" + "de": "", + "fr": "" } } diff --git a/site/pages/query-language/fr.html b/site/pages/query-language/fr.html new file mode 100644 index 00000000..33e3c60f --- /dev/null +++ b/site/pages/query-language/fr.html @@ -0,0 +1,178 @@ + + + + + + + +
+
+ Le langage de requête +

Posez une question à la machine

+

Un seul langage, dans le champ de recherche de la fenêtre et dans bws list --query. Un mot seul cherche dans le nom, le nom affiché, le compte et le chemin de lancement. Un champ affine la recherche. {{field_count}} champs, et le même texte signifie la même chose dans les deux moitiés de l'outil.

+
+
+ +
+
+

Six qui répondent à une vraie question

+
+

Ce qui devrait tourner et ne tourne pas

start:auto !status:running

La première requête que la plupart des gens écrivent, et celle à laquelle services.msc ne peut pas du tout répondre.

+

Les services dont le fichier a disparu

file:missing

Une entrée qui pointe vers un exécutable absent du disque. Le plus souvent une désinstallation qui a laissé l'enregistrement derrière elle.

+

Non signés, sans le bruit des sessions

signed:no peruser:no

Les familles par utilisateur font une copie par session et remplissent une liste de quasi-doublons. Ceci interroge le reste.

+

En marche bien que désactivé

mismatch:running

Une configuration et un état qui ne concordent pas - une entrée que le gestionnaire est réglé pour ne jamais démarrer, qui tourne quand même.

+

Tout ce qui demande des droits de débogage

privilege:SeDebugPrivilege

Un privilège qui permet à un processus d'ouvrir n'importe quel autre. Il vaut la peine de savoir quels services le demandent.

+

Ce que l'outil n'a pas pu lire

account:?

Les entrées dont cette session n'a pas pu lire le compte. Une question que services.msc ne sait même pas poser.

+
+
+
+ +
+
+

Comment s'écrit une requête

+
+
+

Termes

+
    +
  • Les termes sont séparés par des espaces et tous doivent correspondre - il n'y a pas de mot-clé and parce qu'il ne pourrait rien signifier d'autre.
  • +
  • Le même champ écrit deux fois est la seule exception : status:running status:stopped veut dire l'un ou l'autre, car c'est ce qu'écrit le fait de cocher deux filtres. Deux bornes sur un nombre affinent toujours - pid:>1000 pid:<2000 est l'intervalle entre elles.
  • +
  • ! devant un terme le nie : !status:running. Dans un fichier batch avec setlocal EnableDelayedExpansion, cmd avale ce ! sans un mot et la requête signifie discrètement autre chose - écrivez ^! entre les guillemets dans ce cas.
  • +
  • Une virgule à l'intérieur d'un champ est un ou : start:manual,disabled.
  • +
  • Les guillemets protègent tout ce qui contient des espaces ou des deux-points : account:"NT SERVICE\McmSvc".
  • +
  • Un chemin collé tel quel - C:\Windows\System32\svchost.exe - est recherché, pas lu comme un champ appelé C.
  • +
+
+
+

Comment le texte est comparé

+
    +
  • name:spool trouve tout ce qui le contient - le comportement par défaut, car c'est ce qu'on attend d'un champ de recherche.
  • +
  • name:=spooler est exact.
  • +
  • name:spool* accepte les jokers, * et ?.
  • +
  • name:/^Sql.*/ est une expression régulière, et entre les barres obliques elle s'écrit comme s'écrivent les expressions régulières : \?, \\ et une virgule y signifient ce qu'ils signifient là. Une barre oblique qui ne se ferme jamais est une erreur - pour chercher la barre oblique elle-même, écrivez \/ ou utilisez des guillemets.
  • +
  • La casse est ignorée, y compris hors ASCII - un nom affiché en polonais ou en grec correspond quelle que soit la façon dont il est saisi.
  • +
+
+
+

Trois mots que tout champ accepte

+ {{list:reserved-words}} +

Une valeur mal saisie est une erreur, jamais un résultat vide. status:runing répond Did you mean running? et se termine avec le code 2. Une liste vide ressemblerait à une réponse, et la différence entre « rien ne correspond » et « vous avez mal tapé » est la différence entre une machine saine et un audit qui n'a rien prouvé. Une requête qui n'affinerait rien est aussi refusée en ligne de commande, afin qu'un script n'opère pas sur toute la machine à cause d'une faute de frappe.

+
+
+ +
+
+

Plus d'exemples

+

Chacun fonctionne de la même façon dans le champ de recherche de la fenêtre et après bws list --query, et chacun a été exécuté sur un vrai Windows avant d'être écrit ici. Ce qu'il trouve dépend de la machine - et pour une question sur les ennuis, une réponse vide est celle que vous voulez.

+
+

État et type de démarrage

+
+ + + + + + + + +
RequêteCe qu'elle trouve
status:stopPending,startPendingBloqués à l'arrêt ou au démarrage - l'attente que le composant enfichable affiche et qui ne finit jamais.
start:auto status:stopped trigger:noneRéglés pour démarrer automatiquement, arrêtés, et n'attendant aucun déclencheur - la courte liste qui vaut la peine d'être lue après un redémarrage.
start:delayedAutomatique, démarré un peu après les autres entrées automatiques.
start:manual,disabled status:runningEn marche bien que rien ne le démarre au démarrage de la machine - quelque chose l'a demandé, un déclencheur l'a lancé, ou quelqu'un l'a fait.
+
+

Comptes

+
+ + + + + + + +
RequêteCe qu'elle trouve
account:localsystem !publisher:microsoftTourne sous LocalSystem, le compte le plus puissant, depuis un fichier que Microsoft n'a pas signé. Une requête sur l'éditeur lit les signatures d'elle-même, elle prend donc quelques secondes.
!account:localsystem,localservice,networkservice type:ownProcess,sharedProcessLes services qui tournent sous n'importe quel autre compte - un compte virtuel, un compte géré ou celui d'une personne.
account:"NT SERVICE"Un compte virtuel propre au service. Les guillemets gardent les mots ensemble, à cause de l'espace.
+
+

Fichiers et signatures

+
+ + + + + + + + + + +
RequêteCe qu'elle trouve
signed:notSigned,untrustedRoot,tamperedPas de signature, une chaîne à laquelle Windows ne fait pas confiance, ou un fichier modifié après sa signature.
signed:trusted !publisher:microsoftSigné, approuvé, et pas par Microsoft - les logiciels que d'autres entreprises ont mis sur cette machine.
type:driver start:boot,system !signed:trustedLes pilotes chargés au démarrage de Windows dont Windows n'approuve pas la signature. Sur une machine saine, aucun.
!path:C:\Windows type:ownProcessUn service doté de son propre processus dont le fichier se trouve hors du dossier Windows.
path:\AppData\Lancé depuis l'intérieur du profil de quelqu'un, le dernier endroit où l'on s'attend à trouver un service.
path:\System32\\ type:ownProcessUne barre oblique inverse devant une espace fait de l'espace une partie du mot, donc un chemin se terminant par une barre oblique inverse s'écrit avec deux quand un autre terme le suit. À la fin de la requête, une suffit.
+
+

Déclencheurs et dépendances

+
+ + + + + + + + + +
RequêteCe qu'elle trouve
trigger:device status:stoppedEn attente de l'arrivée d'un périphérique, donc arrêtés pour une bonne raison.
trigger:networkDémarré quand une requête arrive sur un point de terminaison réseau - un port, un canal nommé ou une interface RPC.
trigger:stopLes entrées qu'un déclencheur peut arrêter, pas seulement démarrer.
dependson:WinmgmtLes entrées qui ont besoin de WMI pour fonctionner.
requiredby:SpoolerTout ce dont le spouleur d'impression a besoin pour fonctionner, et ce dont ceux-là ont besoin à leur tour.
+
+

Privilèges et processus

+
+ + + + + + + + + + +
RequêteCe qu'elle trouve
privilege:SeTcbPrivilegeDemande à agir comme partie du système d'exploitation.
privilege:SeImpersonatePrivilege !account:localsystemPeut agir au nom d'un client tout en tournant sous un compte autre que LocalSystem.
sidtype:unrestrictedPorte dans son processus un SID de service qui lui est propre, de sorte que les autorisations peuvent le nommer seul. sidtype:restricted interroge ceux dont le processus est en plus restreint en écriture.
type:sharedProcess status:runningTourne à l'intérieur d'un svchost partagé, avec d'autres.
memory:>200MBUn processus qui utilise plus de 200 Mo. La mémoire est lue d'elle-même quand une requête la demande.
pid:1000-2000Dans un processus dont l'identifiant est compris entre 1000 et 2000.
+
+

Noms et texte

+
+ + + + + + + + + + + +
RequêteCe qu'elle trouve
spoolUn mot seul, recherché dans le nom, le nom affiché, le compte et le chemin de lancement.
name:=wuauservExactement ce nom, et rien qui ne fasse que le contenir.
name:win*Les noms qui commencent par win, écrits avec un joker.
name:/svc$/Les noms qui se terminent par svc, écrits comme une expression régulière.
description:noneAucune description du tout, ce qui est le cas de la plupart des pilotes.
description:?Une description que Windows n'a pas pu fournir, le plus souvent parce qu'elle pointe vers un fichier de langue absent.
peruser:templateLes modèles par utilisateur que Windows copie pour chaque session ouverte.
+
+
+
+
+ +
+
+

Chaque champ

+

Construit depuis le programme lui-même, de sorte que ce tableau ne peut pas s'écarter de ce que l'outil accepte. Un champ sans liste de valeurs accepte du texte, un nombre ou une taille - la troisième colonne dit lequel.

+ {{table:query-fields}} +
+
+ +
+
+

Deux choses à savoir

+
+
+

Certains champs sont coûteux, et les demander active la lecture

+

Les signatures prennent plusieurs secondes sur toute une machine et la mémoire est une mesure plutôt qu'un réglage, donc aucune des deux n'est lue pour une liste sauf demande. Une requête qui en mentionne une active cette lecture d'elle-même - vous n'avez pas à vous souvenir de --signatures en plus de signed:no. Dans la fenêtre, une requête sur les signatures dit que la réponse est incomplète tant qu'elles n'arrivent pas, au lieu d'afficher une liste plus courte comme si c'était la réponse.

+
+
+

Un résultat jugé sur quelque chose d'illisible le dit

+

Si des entrées ont été jugées sur un champ que cette session n'a pas pu lire, le résultat porte une ligne disant combien - car un tel résultat peut manquer d'entrées, ou en contenir qui n'ont rien à y faire. C'est la même règle que respecte tout l'outil : une lecture infructueuse est visible dans la réponse, jamais avalée. Un éditeur reçoit le même traitement quand seul le certificat le prétend : à côté de tout verdict autre que trusted, le nom est affiché comme not verified, et publisher: compte l'entrée comme incertaine sur une ligne à part - de sorte que !publisher:microsoft garde un fichier Microsoft que quelqu'un a modifié après sa signature.

+
+
+ La référence de la ligne de commande +
+
diff --git a/site/pages/query-language/page.json b/site/pages/query-language/page.json index ed9b6585..6983be1d 100644 --- a/site/pages/query-language/page.json +++ b/site/pages/query-language/page.json @@ -7,6 +7,7 @@ "slug": { "en": "query-language", "pl": "jezyk-zapytan", - "de": "abfragesprache" + "de": "abfragesprache", + "fr": "langage-de-requete" } } diff --git a/site/pages/sc-exe-and-powershell/fr.html b/site/pages/sc-exe-and-powershell/fr.html new file mode 100644 index 00000000..c1742603 --- /dev/null +++ b/site/pages/sc-exe-and-powershell/fr.html @@ -0,0 +1,97 @@ + + + + + +
+
+ Guide +

sc.exe, Get-Service, et cet outil

+

Les deux sont déjà sur la machine, et les deux resteront utiles. Cette page parle de l'endroit où ils s'arrêtent - et elle dit franchement où ils restent la meilleure réponse.

+
+
+ +
+
+

Où chacun s'arrête

+
+
+

sc.exe

+

Il atteint presque tout ce que sait le gestionnaire de contrôle des services, et ne vous dit rien sur la façon de le demander. La syntaxe date des années quatre-vingt-dix - sc config X start= auto, où l'espace après le signe égal est obligatoire et son absence est un échec silencieux à faire ce que vous vouliez.

+

Il répond sur une entrée à la fois. Pas de filtrage, pas de sortie qu'un script peut analyser sans écrire un analyseur, et pas d'aperçu : sc stop marche ou renvoie un nombre.

+
+
+

Get-Service et les cmdlets *-Service

+

De vrais objets, un pipeline, et une vue superficielle. Dans Windows PowerShell 5.1, celui livré avec Windows, Get-Service n'affiche ni le compte sous lequel un service s'exécute ni sa description. PowerShell 7 affiche les deux, et le chemin de lancement aussi, et s'installe séparément.

+

Stop-Service -Force veut dire « même si quelque chose en dépend » - il arrête les dépendants, et vous le dit après plutôt qu'avant.

+
+
+
+
+ +
+
+

Les mêmes questions, de trois façons

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QuestionAvec ce qui est sur la machineIci
Ce qui devrait tourner et ne tourne pasGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }bws list --query "start:auto !status:running"
Quels services ont un exécutable non signéLire chaque chemin de lancement, le résoudre, appeler Get-AuthenticodeSignature sur chacun - un script, pas une commandebws list --query "signed:no"
Ce que l'arrêt de celui-ci entraîneraitsc enumdepend X, puis lire la liste et décider soi-mêmebws stop X --dry-run --dependents, qui est le plan qui s'exécuterait
Ce qui a changé depuis la semaine dernièreRien, sauf si vous avez écrit vous-même le collecteurbws snapshot diff before.json --live
Qui a changé le type de démarrage, et quandGet-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, puis lire le message de chaque événementbws history Spooler, dont la première ligne dit jusqu'où remonte le journal
Sortie lisible par une machineDes objets avec PowerShell, du texte avec sc.exe--json sur chaque commande, sur la sortie standard, avec les avertissements sur l'erreur standard
+
+

Quand cet outil n'est pas d'accord avec sc.exe sur un service, c'est un bogue ici. Une partie de la suite de tests exécute les deux contre la machine sur laquelle elle tourne et les compare entrée par entrée, et une différence entre les deux est la chose la plus utile à mettre dans un ticket.

+
+
+ +
+
+

Quand continuer à utiliser ce que vous avez

+
    +
  • Vous êtes sur une machine que vous ne toucherez qu'une fois. Les deux sont déjà là et rien n'a à passer une politique.
  • +
  • Vous devez changer le compte, le chemin de lancement ou les actions de récupération. sc.exe fait les trois. Cet outil affiche le compte et le chemin de lancement et ne change ni l'un ni l'autre, et ne lit les actions de récupération que pour avertir avant de terminer un processus.
  • +
  • Vous devez créer ou supprimer un service. sc create et sc delete. Pas ici, volontairement.
  • +
  • Vous êtes déjà plongé dans un pipeline PowerShell. bws list --json revient sous forme d'objets via ConvertFrom-Json, il rejoint donc le pipeline plutôt que de le remplacer.
  • +
+
+
+ +
+
+

Ensemble, plutôt qu'à la place

+

L'outil qui répond à qu'est-ce qui ne va pas sur cette machine et les outils qui changent un réglage ne sont pas le même outil. Posez la question ici, lisez le plan ici, et utilisez ce que vous voulez pour l'exécuter - le plan imprime la ligne de commande qui demande la même chose, et cette ligne est faite pour être copiée.

+ +
+
diff --git a/site/pages/sc-exe-and-powershell/page.json b/site/pages/sc-exe-and-powershell/page.json index 6d5b50b9..9edb81a8 100644 --- a/site/pages/sc-exe-and-powershell/page.json +++ b/site/pages/sc-exe-and-powershell/page.json @@ -7,6 +7,7 @@ "slug": { "en": "sc-exe-and-powershell", "pl": "sc-exe-i-powershell", - "de": "sc-exe-und-powershell" + "de": "sc-exe-und-powershell", + "fr": "sc-exe-et-powershell" } } diff --git a/site/pages/services-msc-alternative/fr.html b/site/pages/services-msc-alternative/fr.html new file mode 100644 index 00000000..fda01f56 --- /dev/null +++ b/site/pages/services-msc-alternative/fr.html @@ -0,0 +1,102 @@ + + + + + +
+
+ Guide +

Une alternative à services.msc

+

Le composant enfichable Services a à peine changé depuis Windows 2000. C'est toujours le moyen le plus rapide de démarrer un service que vous voyez déjà à l'écran, et le plus lent de répondre à n'importe quelle question sur une machine.

+
+
+ +
+
+

Ce qui pousse à chercher ailleurs

+
+
    +
  • Pas de recherche. La seule navigation est de taper une lettre pour sauter au premier nom affiché qui commence par elle. Sur une machine de huit cents entrées, c'est du défilement avec des étapes en plus.
  • +
  • Pas de filtrage. Impossible de demander ce qui est réglé pour démarrer automatiquement et ne tourne pas - la seule question qui trouve une machine en panne.
  • +
  • Une ligne à la fois. Redémarrer douze services, c'est douze clics droits et douze attentes.
  • +
  • « Arrêt en cours... » sans issue hormis le Gestionnaire des tâches et une devinette sur le svchost à terminer.
  • +
+
    +
  • Pas d'historique. Personne ne sait qui a réglé ce type de démarrage sur Désactivé, ni quand, ni si c'était déjà ainsi le mois dernier.
  • +
  • Des données cachées. Le processus, les déclencheurs, les privilèges requis, le descripteur de sécurité, qui a signé l'exécutable - rien de tout cela n'est dans le composant enfichable, et tout compte quand quelque chose ne va pas.
  • +
  • Les colonnes ne peuvent pas changer. Nom, description, état, type de démarrage, ouvrir une session en tant que. C'est toute la liste, et aucune ne peut être triée utilement sur une vraie machine.
  • +
+
+
+
+ +
+
+

Les mêmes trois tâches, dans les deux

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Vous voulezDans services.mscIci
Trouver ce qui devrait tourner et ne tourne pasTrier par type de démarrage, faire défiler, lire chaque lignestart:auto !status:running
Savoir ce qu'un arrêt entraîne avec luiUne boîte de dialogue qui nomme les dépendants après que vous avez appuyé sur ArrêterUn plan avant que quoi que ce soit n'arrive, avec chaque dépendant comme étape et un avertissement quand l'un d'eux est quelque chose dont la machine a besoin
Savoir ce qui a changé depuis la semaine dernièreRienbws snapshot diff before.json --live
Savoir qui a changé un type de démarrageRienbws history Spooler, d'après le journal Système
Redémarrer douze servicesDouze clics droitsEn sélectionner douze, un plan, une exécution, un rapport
Voir qui a signé l'exécutable d'un serviceNon affichéUne colonne, et un critère de recherche : signed:no
Scripter n'importe lequel de ces pointsNon scriptablebws, avec --json et un code de sortie pour chaque fin
+
+
+
+ +
+
+

Ce que le composant enfichable fait encore mieux

+

Deux choses, et prétendre le contraire serait le genre d'affirmation que ce projet ne fait pas.

+
    +
  • Il est déjà sur la machine. Rien à télécharger, rien à faire passer une politique logicielle. Sur une machine que vous ne toucherez qu'une fois, c'est tout l'argument.
  • +
  • Il modifie les actions de récupération, le compte et le chemin de lancement. Cet outil affiche le compte et le chemin de lancement et ne change ni l'un ni l'autre, et ne lit les actions de récupération que pour avertir avant de terminer un processus. Créer, supprimer ou rediriger un service n'est pas ici non plus.
  • +
+

Ce qu'il ne sait pas du tout faire est la raison d'être de cet outil : poser une question, montrer un plan d'abord, et dire ce qui a dérivé.

+
+
+ +
+
+

Ce que c'est

+

{{product}} est libre et gratuit sous GPL-3.0, un fichier par moitié ou un installeur pour toute la machine, et il ne contacte jamais Internet. Consulter ne demande aucun droit d'administrateur - modifier en demande, et il le dit au lieu d'échouer en silence.

+ +
+
diff --git a/site/pages/services-msc-alternative/page.json b/site/pages/services-msc-alternative/page.json index 0ac5bc2e..62e0ad49 100644 --- a/site/pages/services-msc-alternative/page.json +++ b/site/pages/services-msc-alternative/page.json @@ -7,6 +7,7 @@ "slug": { "en": "services-msc-alternative", "pl": "alternatywa-dla-services-msc", - "de": "services-msc-alternative" + "de": "services-msc-alternative", + "fr": "alternative-a-services-msc" } } diff --git a/site/pages/snapshots-and-drift/fr.html b/site/pages/snapshots-and-drift/fr.html new file mode 100644 index 00000000..17e1d57c --- /dev/null +++ b/site/pages/snapshots-and-drift/fr.html @@ -0,0 +1,65 @@ + + + + + +
+
+ Ce que services.msc n'a jamais fait +

Instantanés et dérive

+

Tous les autres outils vous disent à quoi ressemble une machine maintenant. La question qu'un administrateur se pose vraiment est qu'est-ce qui est différent de l'époque où ça marchait - et aucun Windows standard n'y répond.

+
+
+ +
+
+

Ce que contient un instantané

+

La machine entière à un moment donné : chaque service et chaque pilote, avec son type de démarrage, son compte, son chemin de lancement et ses arguments, le hachage et le signataire du fichier qu'il exécute, ses dépendances et ce qui en dépend, ses déclencheurs, ses privilèges requis, son type de SID et son descripteur de sécurité - plus le nom de la machine, le compte qui l'a pris et si ce compte était un administrateur.

+
bws snapshot create before.json --note "before the patch"
+

C'est du JSON avec un champ par ligne. C'est voulu : un instantané entre ainsi dans un dépôt et git diff le lit, de sorte que la comparaison propre à l'outil n'est pas la seule façon d'en regarder un.

+

Rangez-le pour ce qu'il est. Un instantané décrit la machine entière, jusqu'à chaque chemin de lancement et chaque descripteur de sécurité. Il est écrit avec les autorisations que son répertoire a déjà, et l'outil ne restreint rien - un répertoire que d'autres personnes peuvent lire est donc un répertoire où elles peuvent lire tout cela.

+
+
+ +
+
+

Puis demander ce qui est différent

+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
+
    +
  • La configuration et l'état d'exécution sont signalés séparément. Deux instantanés pris à un jour d'intervalle diffèrent par ce qui se trouve tourner, et presque rien de cela n'est une dérive. Mélangée, la seule ligne qui compte - un type de démarrage que quelqu'un a changé - est enterrée sous quarante qui ne comptent pas.
  • +
  • Ce qui n'a pas pu être comparé est listé, pas caché. Un champ que l'un des deux instantanés n'a jamais lu, parce que cette session n'y avait pas droit, ressort comme not compared sous son entrée, et le résumé compte ces entrées. Une comparaison qui dit rien n'a changé signifie donc que rien n'a changé dans ce que les deux côtés pouvaient voir.
  • +
+
    +
  • Un instantané avec élévation comparé à un autre sans élévation mentirait, en signalant comme supprimées des entrées que personne n'a supprimées. Chaque fichier enregistre si le compte qui l'a pris était un administrateur, et la comparaison le dit.
  • +
  • Deux fichiers, pas seulement un fichier et cette machine. Prenez-en un en préproduction et un en production et comparez-les n'importe où - la réponse à pourquoi la préproduction diffère-t-elle n'a besoin d'aucune des deux machines.
  • +
+
+

La fenêtre fait la même chose sous Audit.... Take snapshot... écrit le même fichier, avec une note si vous en tapez une, et Compare with this machine... ou Compare two snapshots... montre ce qui a changé à la place de la liste, une ligne par champ, tout ce qui rend la comparaison moins qu'exacte étant dit au-dessus du tableau. Show la restreint aux différences ou à un champ, et Export... l'écrit dans un fichier CSV.

+
+
+ +
+
+

Le code de sortie est le point essentiel

+

--exit-code se termine par 5 quand la configuration diffère - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. Un service qui s'est seulement arrêté ou démarré de lui-même est signalé et ne compte pas, pas plus que les copies par utilisateur que Windows fait pour chaque session ouverte, qui sont écartées et comptées. Ce n'est pas un échec - trouver une dérive est ce pour quoi cet outil existe, et la trouver n'est pas un échec - ce qui explique qu'il ait un numéro à lui plutôt que d'emprunter celui qui signifie que quelque chose s'est mal passé.

+
# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - aucune dérive de configuration
+#   5 - la configuration a dérivé, et drift.json dit en quoi
+#   3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+

C'est tout le mécanisme : une référence prise quand la machine était réputée saine, et une question posée chaque nuit. Si la première nuit répond 5, quelqu'un l'apprend la première nuit plutôt que le matin où quelque chose casse.

+ L'utiliser pour un audit +
+
diff --git a/site/pages/snapshots-and-drift/page.json b/site/pages/snapshots-and-drift/page.json index 02c034e0..465c2dd0 100644 --- a/site/pages/snapshots-and-drift/page.json +++ b/site/pages/snapshots-and-drift/page.json @@ -7,6 +7,7 @@ "slug": { "en": "snapshots-and-drift", "pl": "snapshoty-i-dryf", - "de": "snapshots-und-drift" + "de": "snapshots-und-drift", + "fr": "instantanes-et-derive" } } diff --git a/site/pages/stop-a-service-that-will-not-stop/fr.html b/site/pages/stop-a-service-that-will-not-stop/fr.html new file mode 100644 index 00000000..ac6490a1 --- /dev/null +++ b/site/pages/stop-a-service-that-will-not-stop/fr.html @@ -0,0 +1,68 @@ + + + + + +
+
+ Guide +

Un service bloqué sur Arrêt en cours...

+

Le composant enfichable affiche Arrêt en cours et ne bouge plus. La réponse habituelle est le Gestionnaire des tâches, une devinette sur le svchost.exe dans lequel il vit, et Fin de tâche - ce qui termine aussi tous les autres services de ce processus, sans dire lesquels c'étaient.

+
+
+ +
+
+

Pourquoi cela arrive

+
    +
  • Le service ne répond pas à la demande d'arrêt. Windows le lui demande poliment et attend. Un service qui s'est figé, ou qui attend quelque chose qui ne reviendra pas, ne répond jamais.
  • +
  • Quelque chose qui en dépend tourne encore. Le gestionnaire refuse l'arrêt plutôt que de casser l'autre, et le composant enfichable l'affiche comme une attente.
  • +
  • Il partage son processus avec d'autres. La plupart des services Windows vivent dans un svchost.exe partagé. Terminer ce processus les termine tous, ce qui est exactement ce que fait le Gestionnaire des tâches sans les nommer.
  • +
+
+
+ +
+
+

Regarder avant de terminer quoi que ce soit

+

Demandez ce que le terminer emporterait avec lui. Rien n'arrive tant que vous n'ôtez pas --dry-run.

+
$ bws kill Spooler --dry-run
+

L'aperçu nomme le processus par son numéro, nomme chaque autre service qui y vit, et montre deux étapes plutôt qu'une : demander au service de s'arrêter, et seulement si cela ne marche pas, terminer le processus. Un service qui s'arrête de lui-même n'est jamais terminé.

+
+
    +
  • --force saute l'étape polie et termine le processus tout de suite. Cela change le plan plutôt que son exécution, de sorte que l'aperçu montre une étape au lieu de deux et que la différence est visible avant que quoi que ce soit n'arrive.
  • +
  • --restart remet tout en route une fois le processus disparu - l'entrée dont vous avez parlé et tout ce qui partageait son processus. Sans lui, la machine reste avec ces services arrêtés, et le rapport dit comment les redémarrer.
  • +
+
    +
  • Le refus vient avant le bouton. Un pilote, un processus que le système protège, un service pour lequel le gestionnaire n'accepte pas d'arrêt - refusés à la construction du plan, avec la raison, plutôt qu'après soixante secondes d'attente.
  • +
  • Un avertissement quand cela compte. Si l'entrée est de celles sans lesquelles la machine ne fonctionne pas, le plan le dit - l'arrêter fait tomber la machine, pas seulement le service.
  • +
+
+

Terminer un processus est la seule chose que fait cet outil à laquelle personne ne peut s'opposer au nom de la machine. C'est pourquoi c'est une commande à part entière, pourquoi l'aperçu nomme chaque service qu'elle emporte, et pourquoi l'étape polie vient d'abord sauf si vous dites le contraire.

+
+
+ +
+
+

L'ordre le plus sûr

+
    +
  1. Voir ce que c'est. bws show Spooler - le processus, ce qui en dépend, ce dont il dépend, et s'il accepte les demandes d'arrêt.
  2. +
  3. Essayer l'arrêt ordinaire, comme un plan. bws stop Spooler --dry-run --dependents. Si la réponse est un refus, elle dit laquelle des trois raisons c'est.
  4. +
  5. S'il ne s'arrête pas, regarder ce que coûte le terminer. bws kill Spooler --dry-run, et lire la liste des services qui partagent ce processus.
  6. +
  7. Puis le faire, avec un chemin de retour. bws kill Spooler --restart. Le rapport se termine par ce qui n'a pas marché et les commandes qui remettent les choses en place.
  8. +
+

Les quatre fonctionnent de la même façon dans la fenêtre : clic droit sur une ligne, choisir Force stop..., lire le plan, et le bouton en dessous porte le nom de ce qu'il va faire.

+
+
+ +
+
+

Pourquoi ne pas simplement utiliser le Gestionnaire des tâches

+

Parce qu'il répond à une autre question. Le Gestionnaire des tâches connaît les processus et ce problème concerne les services, et les deux ne correspondent pas un à un.

+

Un svchost.exe partagé peut contenir une douzaine de services. Le Gestionnaire des tâches le terminera sans dire lesquels, aucun ne revient de lui-même, et rien ne vous dit ensuite ce qui s'est arrêté. Un EDR qui signale un processus terminant svchost.exe fait son travail, et il ne peut pas distinguer votre clic de tout autre.

+ +
+
diff --git a/site/pages/stop-a-service-that-will-not-stop/page.json b/site/pages/stop-a-service-that-will-not-stop/page.json index b562994c..b5c878b4 100644 --- a/site/pages/stop-a-service-that-will-not-stop/page.json +++ b/site/pages/stop-a-service-that-will-not-stop/page.json @@ -7,6 +7,7 @@ "slug": { "en": "stop-a-windows-service-that-will-not-stop", "pl": "usluga-ktora-nie-chce-sie-zatrzymac", - "de": "windows-dienst-laesst-sich-nicht-beenden" + "de": "windows-dienst-laesst-sich-nicht-beenden", + "fr": "service-windows-impossible-a-arreter" } } diff --git a/site/pages/what-should-be-running/fr.html b/site/pages/what-should-be-running/fr.html new file mode 100644 index 00000000..0a9ceed7 --- /dev/null +++ b/site/pages/what-should-be-running/fr.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Guide +

Quels services devraient tourner ?

+

La réponse honnête est que personne ne peut vous le dire, et que chaque liste qui prétend le faire décrit une machine qui n'est pas la vôtre. Ce à quoi on peut répondre est plus étroit et bien plus utile : ce qui ne cadre pas sur cette machine, et ce qui est différent de l'époque où elle marchait.

+
+
+ +
+
+

Pourquoi la question générale n'a pas de réponse

+
    +
  • L'ensemble diffère selon l'édition, la version et le rôle de Windows. Un contrôleur de domaine, un portable et un hôte de conteneurs ne s'accordent sur presque rien, et une liste écrite pour l'un est fausse pour les autres.
  • +
  • La moitié de ce qui est installé ne vient pas de Windows. Pilotes, agents, services de mise à jour, démons de licence - chacun a été mis là par quelque chose, et aucune liste générale ne sait quoi.
  • +
  • La plupart des services sont faits pour être arrêtés. Un Windows moderne démarre une fraction de ce qu'il enregistre : le reste attend un déclencheur - l'arrivée d'un périphérique, l'ouverture d'un port, l'adhésion à un domaine - et arrêté est leur état correct.
  • +
  • Les listes « désactivez ceux-ci pour les performances » sont la façon dont les machines cassent. Le service qui semble inactif est celui qu'autre chose démarre à la demande, et la panne apparaît une semaine plus tard ailleurs, sans rapport apparent.
  • +
+
+
+ +
+
+

Les questions qui ont bel et bien des réponses

+
+
+

Ce qui devrait tourner et ne tourne pas

+

start:auto !status:running

+

On a dit à Windows de démarrer ceux-ci et ils ne tournent pas. Sur une machine saine, c'est une courte liste - quelques entrées qui démarrent tard et s'arrêtent de nouveau. Tout le reste mérite un coup d'œil.

+
+
+

Ce qui est désactivé et tourne quand même

+

mismatch:running

+

La configuration et l'état ne concordent pas. Le plus souvent, quelqu'un l'a désactivé sans l'arrêter, et le prochain redémarrage sera une surprise.

+
+
+

Ce qui pointe vers un fichier qui a disparu

+

file:missing

+

Une désinstallation qui a laissé l'enregistrement derrière elle. Sans danger tant que rien n'essaie de le démarrer, et un indice sur ce qui se trouvait sur cette machine.

+
+
+

Ce que personne n'a signé

+

signed:no peruser:no

+

Pas une preuve de quoi que ce soit en soi, et le bon endroit où commencer à lire. Le second terme écarte les familles par utilisateur, qui remplissent sinon la liste de quasi-doublons.

+
+
+

Ce qui demande les privilèges les plus puissants

+

privilege:SeDebugPrivilege

+

Un privilège qui permet à un processus d'ouvrir n'importe quel autre. Une poignée de services légitimes le demandent, et il vaut la peine de savoir lesquels sur votre machine.

+
+
+

Ce qui attend un déclencheur

+

trigger:any status:stopped

+

Arrêtés parce que rien ne les a encore sollicités, et non parce que quelque chose ne va pas. Savoir lesquels ils sont est ce qui fait que la première liste cesse d'être alarmante.

+
+
+
+
+ +
+
+

Celle qui les bat toutes

+

Demandez à la machine elle-même, quand elle fonctionnait.

+

Prenez un instantané le jour où la machine entre en service. Alors est-ce que ceci devrait tourner devient est-ce que ceci tournait quand tout marchait - une question sur votre machine plutôt que sur une machine dans un article.

+
bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... une semaine, un correctif ou un incident plus tard
+bws snapshot diff C:\baselines\web01.json --live
+

La configuration est signalée à part de l'état d'exécution, de sorte que la réponse n'est pas quarante services qui se trouvent en marche - c'est le type de démarrage que quelqu'un a changé.

+ Auditer la dérive d'une machine +
+
+ +
+
+

Avant d'arrêter quoi que ce soit

+

Chaque arrêt dans cet outil montre d'abord son plan : les étapes, ce qui tombe avec elles, et un avertissement quand l'une d'elles est quelque chose sans quoi la machine ne fonctionne pas. La liste de ces services est une liste de départ de sept - les deux moitiés de RPC et le lanceur DCOM, le gestionnaire de comptes, l'isolation des clés, le gestionnaire de session et le Plug and Play - et le Bureau à distance n'y figure pas, donc dans une session distante, lisez le plan.

+ +
+
diff --git a/site/pages/what-should-be-running/page.json b/site/pages/what-should-be-running/page.json index 943bcfe1..fd08fbe6 100644 --- a/site/pages/what-should-be-running/page.json +++ b/site/pages/what-should-be-running/page.json @@ -7,6 +7,7 @@ "slug": { "en": "what-windows-services-should-be-running", "pl": "ktore-uslugi-windows-powinny-dzialac", - "de": "welche-windows-dienste-laufen-sollten" + "de": "welche-windows-dienste-laufen-sollten", + "fr": "quels-services-windows-devraient-tourner" } } diff --git a/site/site.json b/site/site.json index 51a92a39..0565bf81 100644 --- a/site/site.json +++ b/site/site.json @@ -7,7 +7,7 @@ "support": "https://donislawdev.com/support/", "_languages": "The languages that are PUBLISHED, in the order the switch lists them. The first is the default and lives at the root. The others live under /{code}/. A language that is in language_registry and not here is prepared and unreachable, which is how it is written and built before it goes live.", - "languages": ["en", "de", "pl"], + "languages": ["en", "de", "fr", "pl"], "_language_registry": "How each language is written, in one place. The key is the address code in lower case and the name of its files (site/i18n/{code}.json, site/pages/{id}/{code}.html). tag is what lang and hreflang carry, locale is og:locale, name is the language in its OWN alphabet and is never translated, short is what the switch shows for the language you are in. dir is written only when it is rtl. slugs is own when the language has a slug of its own for every page in each page.json, and english when its pages live at the default language's slugs - the choice for alphabets that cannot be an ASCII address without being transliterated.", "language_registry": { From 42f19f7b3bf7c77da2c19b4803a5078f07ab738b Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 21 Oct 2026 10:37:13 +0200 Subject: [PATCH 3/5] Add the website in Spanish Twelve pages and the language file, with slugs of their own, held against the English pages for shape, commands and tokens and stamped with the English they follow. Co-Authored-By: Claude Sonnet 5.5 --- site/i18n/es.json | 95 +++++++++ site/pages/404/es.html | 30 +++ site/pages/404/page.json | 3 +- site/pages/audit-windows-services/es.html | 64 ++++++ site/pages/audit-windows-services/page.json | 3 +- site/pages/cli-reference/es.html | 194 +++++++++++++++++ site/pages/cli-reference/page.json | 3 +- site/pages/download/es.html | 86 ++++++++ site/pages/download/page.json | 3 +- site/pages/faq/es.html | 78 +++++++ site/pages/faq/page.json | 3 +- site/pages/home/es.html | 200 ++++++++++++++++++ site/pages/home/page.json | 3 +- site/pages/query-language/es.html | 178 ++++++++++++++++ site/pages/query-language/page.json | 3 +- site/pages/sc-exe-and-powershell/es.html | 97 +++++++++ site/pages/sc-exe-and-powershell/page.json | 3 +- site/pages/services-msc-alternative/es.html | 102 +++++++++ site/pages/services-msc-alternative/page.json | 3 +- site/pages/snapshots-and-drift/es.html | 65 ++++++ site/pages/snapshots-and-drift/page.json | 3 +- .../stop-a-service-that-will-not-stop/es.html | 68 ++++++ .../page.json | 3 +- site/pages/what-should-be-running/es.html | 86 ++++++++ site/pages/what-should-be-running/page.json | 3 +- site/site.json | 2 +- 26 files changed, 1368 insertions(+), 13 deletions(-) create mode 100644 site/i18n/es.json create mode 100644 site/pages/404/es.html create mode 100644 site/pages/audit-windows-services/es.html create mode 100644 site/pages/cli-reference/es.html create mode 100644 site/pages/download/es.html create mode 100644 site/pages/faq/es.html create mode 100644 site/pages/home/es.html create mode 100644 site/pages/query-language/es.html create mode 100644 site/pages/sc-exe-and-powershell/es.html create mode 100644 site/pages/services-msc-alternative/es.html create mode 100644 site/pages/snapshots-and-drift/es.html create mode 100644 site/pages/stop-a-service-that-will-not-stop/es.html create mode 100644 site/pages/what-should-be-running/es.html diff --git a/site/i18n/es.json b/site/i18n/es.json new file mode 100644 index 00000000..a204eca9 --- /dev/null +++ b/site/i18n/es.json @@ -0,0 +1,95 @@ +{ + "_translated_from": "1867e30d6665", + "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.", + + "chrome.skip": "Saltar al contenido", + "chrome.nav": "Sitio", + "chrome.language": "Idioma", + + "chrome.footer.product": "Producto", + "chrome.footer.guides": "Guías", + "chrome.footer.project": "Proyecto", + "chrome.footer.source": "Código fuente en GitHub", + "chrome.footer.releases": "Versiones", + "chrome.footer.issues": "Seguimiento de incidencias", + "chrome.footer.security": "Informar de un problema de seguridad", + "chrome.footer.support": "Apoyar el proyecto", + + "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publicado bajo la Licencia Pública General de GNU, versión 3. Creado con un flujo de trabajo asistido por IA.", + "chrome.legal.trademark": "{{product}} no está afiliado a Microsoft, ni respaldado ni patrocinado por Microsoft. Windows es una marca del grupo de empresas de Microsoft, y el nombre se usa aquí solo para decir qué administra la herramienta.", + "chrome.legal.privacy": "Este sitio no establece cookies, no ejecuta scripts y no carga nada de ningún otro sitio.", + + "table.head.code": "Código", + "table.head.meaning": "Significado", + "table.head.switch": "Opción", + "table.head.what": "Qué hace", + "table.head.where": "Dónde actúa", + "table.head.field": "Campo", + "table.head.asks": "Pregunta por", + "table.head.values": "Valores", + + "exit.ok": "Hecho, y todo llegó adonde iba.", + "exit.runtime": "La herramienta falló: no pudo hacer lo que se le pidió, por una razón que tiene que ver con la herramienta y no con el plan.", + "exit.usage": "La línea de comandos era incorrecta. A un comando mal escrito se le ofrece el que probablemente quería.", + "exit.incomplete": "El plan era bueno, se ejecutó, y algo de él no llegó adonde iba: el administrador rechazó, o la sesión no tenía derechos sobre ello.", + "exit.interrupted": "Alguien detuvo la ejecución a mano. Distinto de cero aunque cada paso hubiera llegado, para que un script envolvente no trate una ejecución interrumpida como limpia.", + "exit.differences": "Se ejecutó una comparación y encontró la configuración desviada: una entrada añadida o eliminada, o una configurada de otro modo. El estado de ejecución por sí solo no es deriva. Solo con --exit-code, porque encontrar deriva es para lo que sirve esta herramienta, y encontrarla no es un fallo.", + + "switch.query": "Acotar el listado con el lenguaje de consulta.", + "switch.signatures": "Leer quién firmó cada ejecutable y si Windows confía en él. Varios segundos en todo un equipo, así que está desactivado salvo que se pida, y una consulta sobre firmas lo activa por sí sola.", + "switch.memory": "Leer lo que usa el proceso de cada entrada en ejecución. Desactivado por defecto porque es una medición y no un ajuste: un segundo después es distinta.", + "switch.required-by": "Leer qué entradas dejan de funcionar si una se detiene, preguntado directamente a Windows en lugar de deducido de lo que declara cada una. Una llamada por entrada, así que está desactivado salvo que se pida. show y snapshot create lo leen siempre.", + "switch.follow-network": "Dejar que la herramienta salga de este equipo, sea como sea: una ruta de lanzamiento que vive en el recurso compartido de otra persona, y un certificado que este equipo aún no tiene. Desactivado por defecto por seguridad: un recurso compartido inalcanzable cuesta veintiún segundos y se autentica como quien lo ejecutó, y obtener un certificado es una conexión con un tercero en medio de un listado corriente. Sin él, una firma se comprueba contra lo que hay aquí, y un resultado que pudo deberse a no mirar se informa como no leído y no como un veredicto.", + "switch.force": "En kill, terminar el proceso de inmediato sin pedirlo con cortesía: la vista previa muestra entonces un paso en lugar de dos. En snapshot create, sustituir una instantánea que ya existe; un archivo que no es una instantánea nunca se sustituye.", + "switch.restart": "En kill, devolver la entrada a su sitio una vez desaparecido el proceso, junto con todo lo que lo compartía.", + "switch.stop": "En start-type, y solo junto a disabled, detener la entrada en el mismo plan una vez escrito el ajuste. Un tipo de inicio cambia el próximo arranque y nada ahora, así que sin esta opción una entrada en ejecución configurada como deshabilitada sigue ejecutándose.", + "switch.full": "En show, imprimir también los campos realmente vacíos. Un campo que nadie pudo leer se imprime en cualquier caso.", + "switch.components": "En license, convertir el aviso en cada componente de este ejecutable con su versión, su licencia y su procedencia. El mismo conjunto que lleva la lista de materiales publicada junto a la descarga, porque ambos se generan desde un único registro.", + "switch.json": "El mismo documento, legible por máquina, por la salida estándar.", + "switch.note": "Para qué se tomó la instantánea, guardado dentro del archivo.", + "switch.exit-code": "Terminar con el código 5 cuando la configuración difiere: una entrada añadida o eliminada, o una configurada de otro modo. El estado de ejecución por sí solo no cuenta. Desactivado por defecto, para que un script que solo quiere imprimir las diferencias no tropiece por encontrar alguna.", + "switch.live": "Comparar el archivo con este equipo tal como está ahora, en lugar de con un segundo archivo.", + "switch.timing": "Cuánto tardó cada parte de la lectura, por el error estándar.", + "switch.dry-run": "Imprimir el plan y no cambiar nada. Es el mismo plan que ejecuta una ejecución: no hay un segundo camino de código para la ejecución real.", + "switch.dependents": "Poner en el plan, como pasos propios, los servicios que dejarían de funcionar.", + "switch.timeout": "Cuánto puede durar un paso sin progreso antes de abandonarlo, contado de nuevo cada vez que el servicio informa de progreso. Sesenta segundos salvo que diga otra cosa. Un servicio que sigue informando de progreso se vigila todo el tiempo que haga falta. Agotarse es el final de la vigilancia y no un fallo, y el informe dice dónde quedó la entrada.", + + "field.name": "el nombre del servicio, por el que lo identifica Windows", + "field.display": "el nombre para mostrar, como lo escribe este Windows", + "field.description": "lo que la entrada dice de sí misma", + "field.type": "qué clase de entrada es", + "field.peruser": "si es una de las familias por usuario de las que Windows hace una copia por sesión", + "field.status": "lo que está haciendo ahora mismo", + "field.start": "lo que hace el administrador con ella en el próximo arranque", + "field.account": "la cuenta con la que se ejecuta, como la escribe el administrador", + "field.pid": "el proceso en el que se ejecuta", + "field.trigger": "una condición que la inicia o la detiene", + "field.path": "la línea de comandos que lanza el administrador", + "field.file": "si el archivo que ejecuta está en el disco", + "field.signed": "lo que Windows piensa de la firma del archivo, sin comprobar la revocación", + "field.publisher": "quién firmó el archivo: solo demostrado por una firma de confianza", + "field.privilege": "un privilegio que pide la entrada", + "field.dependson": "lo que necesita esta", + "field.requiredby": "lo que deja de funcionar si esta se detiene", + "field.sidtype": "el tipo de SID del servicio", + "field.sddl": "el descriptor de seguridad, como texto", + "field.memory": "lo que usa su proceso", + "field.mismatch": "configuración y estado que no concuerdan", + + "field.open.name": "texto", + "field.open.display": "texto", + "field.open.description": "texto", + "field.open.account": "texto, p. ej. localsystem", + "field.open.pid": "un número: 1234, >1000, 100-200", + "field.open.path": "texto", + "field.open.publisher": "texto", + "field.open.privilege": "texto, p. ej. SeDebugPrivilege", + "field.open.dependson": "un nombre de servicio", + "field.open.requiredby": "un nombre de servicio", + "field.open.sddl": "texto", + "field.open.memory": "un tamaño con unidad: 500MB, >1GB, 100MB-1GB", + + "reserved.any": "hay un valor, sea cual sea", + "reserved.none": "realmente no hay ningún valor: la entrada no tiene ninguno", + "reserved.unreadable": "la herramienta no pudo leer este campo, o no lo ha leído, lo que es una pregunta que services.msc ni siquiera puede hacer" +} diff --git a/site/pages/404/es.html b/site/pages/404/es.html new file mode 100644 index 00000000..03dff23e --- /dev/null +++ b/site/pages/404/es.html @@ -0,0 +1,30 @@ + + + + + +
+
+ 404 +

Esa página no está aquí

+

La dirección no coincide con nada de este sitio. No se borró nada para que ocurriera: aquí las direcciones no cambian, porque una página movida rompería todos los enlaces que alguna vez apuntaron a ella.

+ +
+
+ +
+
+

A lo que suele venir la gente

+
+

Descarga

Dos ejecutables autónomos, o un instalador.

+

Lenguaje de consulta

Cada campo y cada valor por los que puede buscar.

+

Referencia CLI

Cada opción y cada código de salida.

+

Instantáneas y deriva

Qué ha cambiado en este equipo desde ayer.

+

Preguntas y límites

Incluido lo que la herramienta rechaza por diseño.

+

El código fuente

Todo está en GitHub bajo GPL-3.0.

+
+
+
diff --git a/site/pages/404/page.json b/site/pages/404/page.json index 62a066a8..c66bcd64 100644 --- a/site/pages/404/page.json +++ b/site/pages/404/page.json @@ -7,6 +7,7 @@ "en": "404", "pl": "404", "de": "404", - "fr": "404" + "fr": "404", + "es": "404" } } diff --git a/site/pages/audit-windows-services/es.html b/site/pages/audit-windows-services/es.html new file mode 100644 index 00000000..3438e6f9 --- /dev/null +++ b/site/pages/audit-windows-services/es.html @@ -0,0 +1,64 @@ + + + + + +
+
+ Guía +

Auditar servicios de Windows

+

Una auditoría no es una lista de lo que hay en el equipo. Es la diferencia entre lo que hay en el equipo y lo que debía haber, y ningún Windows de serie registra la segunda mitad.

+
+
+ +
+
+

Tres preguntas, y qué las responde

+
+
+

¿Qué ha cambiado desde que se construyó este equipo?

+

Una instantánea tomada al desplegar y una comparación con el equipo esta noche. La configuración se informa aparte de lo que simplemente se inició o se detuvo, de modo que el único tipo de inicio que alguien cambió no queda enterrado bajo cuarenta servicios que casualmente están en marcha.

+

bws snapshot diff baseline.json --live

+
+
+

¿Por qué difiere preproducción de producción?

+

Tome una instantánea en cada uno y compare los dos archivos, en cualquier parte, sin que ninguno de los equipos esté presente. Los archivos llevan el nombre del equipo y la cuenta que los tomó.

+

bws snapshot diff staging.json production.json

+
+
+

¿Qué hay aquí que no debería haber?

+

Consultas que encuentran las formas que merece la pena mirar: un servicio cuyo ejecutable ha desaparecido, uno sin firmar, uno en marcha aunque está deshabilitado, uno que pide derechos de depuración.

+

file:missing, signed:no, mismatch:running

+
+
+
+
+ +
+
+

La forma nocturna

+
# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sin deriva de configuración
+#   5 - la configuración se desvió, y drift.json dice en qué
+#   3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+

El código de salida 5 es lo que convierte esto en una auditoría y no en un informe que nadie lee: la tarea guarda silencio hasta que el equipo se desvía, y la noche en que lo hace, alguien recibe un aviso.

+

Tome la línea base desde una sesión con privilegios elevados. Sin derechos de administrador el administrador lista menos entradas y rechaza más de las que lista. La instantánea registra si la cuenta que la tomó era administrador, de modo que la comparación puede decirlo en lugar de informar como eliminadas entradas que nadie eliminó, pero una línea base a la que le falta la mitad del equipo sigue siendo una línea base a la que le falta la mitad del equipo.

+
+
+ +
+
+

Lo que vale una instantánea como prueba

+
    +
  • Es JSON con un campo por línea, así que cabe en un repositorio y git diff la lee. Un auditor que no tenga esta herramienta puede leer el archivo igualmente, y un sistema de control de versiones ya responde al cuándo.
  • +
  • Contiene lo que el complemento nunca mostró: la ruta de lanzamiento y los argumentos, el hash y el firmante del archivo, las dependencias en ambos sentidos, los desencadenadores, los privilegios requeridos, el tipo de SID y el descriptor de seguridad.
  • +
  • Dice lo que no pudo leer. Un campo sobre el que esta sesión no tenía derechos se registra como no leído, nunca como vacío, de modo que una comparación posterior puede decir not compared en lugar de llamarlo en silencio sin cambios.
  • +
  • Es una descripción de todo el equipo. Archívela en consecuencia: se escribe con los permisos que su directorio ya tiene, y la herramienta no restringe nada.
  • +
+ Cómo funcionan las instantáneas y las comparaciones +
+
diff --git a/site/pages/audit-windows-services/page.json b/site/pages/audit-windows-services/page.json index 16b80ce5..0a6a305d 100644 --- a/site/pages/audit-windows-services/page.json +++ b/site/pages/audit-windows-services/page.json @@ -8,6 +8,7 @@ "en": "audit-windows-services", "pl": "audyt-uslug-windows", "de": "windows-dienste-auditieren", - "fr": "auditer-les-services-windows" + "fr": "auditer-les-services-windows", + "es": "auditar-servicios-de-windows" } } diff --git a/site/pages/cli-reference/es.html b/site/pages/cli-reference/es.html new file mode 100644 index 00000000..de5f469b --- /dev/null +++ b/site/pages/cli-reference/es.html @@ -0,0 +1,194 @@ + + + + + + + +
+
+ Referencia +

Referencia de la línea de comandos

+

Cada comando, cada opción y cada código de salida de bws, versión {{version}}. bws --help es la referencia autorizada y es más larga: esta página es la misma superficie, dispuesta para leerse.

+
+
+ +
+
+

Los comandos

+

Once comandos. snapshot es un sustantivo y admite una palabra después. tool también lo es y, por sí solo, lista las herramientas.

+
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
+bws show NAME [--full] [--follow-network] [--json] [--timing]
+bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
+bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
+bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
+bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
+bws history [NAME] [--json] [--timing]
+bws tool
+bws tool fix
+bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
+bws license [--components]
+bws --help
+bws --version
+

A un comando mal escrito se le ofrece el que probablemente quería, y la ejecución termina con el código 2 en lugar de hacer algo parecido a lo que pidió.

+
$ bws lst
+There is no command lst. Did you mean list?
+
+
+ +
+
+

Qué hace cada comando

+
+
+

list y show

+

list es todo el equipo, acotado por --query. show es una entrada con todo lo que se sabe de ella: la firma, los privilegios, el descriptor de seguridad y la memoria, todo leído cada vez, porque sobre una sola entrada eso cuesta unos sesenta milisegundos mientras que sobre todo el equipo cuesta un segundo. Los campos realmente vacíos se omiten salvo que pase --full. Un campo que nadie pudo leer se imprime en cualquier caso, porque omitirlo parecería una respuesta.

+
+
+

stop, start y restart

+

Cada uno construye un plan y lo ejecuta. --dry-run imprime el plan y no cambia nada, --dependents pone en él los servicios que dejarían de funcionar como pasos propios, y --timeout dice cuánto puede durar un paso sin progreso. Los controladores se rechazan en lugar de intentarse, porque detener un controlador del núcleo a menudo no es reversible sin reiniciar.

+
+
+

kill: para un servicio que no se detiene

+

Pide al servicio que se detenga y termina el proceso que hay detrás solo si eso no funciona, de modo que una entrada que se detiene por sí sola nunca se termina. Terminar un proceso se lleva consigo a todo otro servicio que vive en él, se hubiera detenido antes o no, y la vista previa los nombra y nombra el proceso por su número. --force omite el paso cortés y la vista previa muestra entonces un paso en lugar de dos. --restart lo devuelve todo a su sitio después.

+

Windows escribe esta idea de otra manera. --force en Stop-Service significa "aunque algo dependa de él", que es lo que aquí hace --dependents. Por eso este es un comando propio y no una opción de stop.

+
+
+

start-type: un ajuste, no un movimiento

+

Dice qué hará el administrador con una entrada en el próximo arranque, y sin --stop no mueve nada: una entrada que se está ejecutando sigue ejecutándose, una detenida sigue detenida, y el plan lo dice. disabled es el que merece una pausa, porque impide que el administrador inicie la entrada en absoluto, incluso a petición de otra cosa que la necesite. delayed es automático, iniciado un poco después de las demás entradas automáticas (la palabra por la que pregunta start:delayed en una consulta), y Windows lo rechaza para una entrada de un grupo de orden de carga, lo que el plan dice antes de que ocurra nada. Cada uno de los cuatro escribe si la entrada se inicia tarde, como hace sc.exe. --stop, solo junto a disabled, detiene la entrada en el mismo plan una vez escrito el ajuste.

+
+
+

snapshot create y snapshot diff

+

create lee siempre las firmas y los hashes, porque una instantánea se conserva y se compara más tarde, y una sin ellos comparada con una que los tiene se trataría como si el equipo hubiera cambiado. diff dice qué cambió al pasar del primer archivo al segundo, o de un archivo a este equipo con --live. La página de instantáneas tiene el formato y el razonamiento.

+
+
+

history: quién lo cambió, a partir del registro del sistema

+

Cambios de tipo de inicio e instalaciones del registro del sistema, los más recientes primero, con la cuenta que registró Windows. La primera línea dice hasta dónde llega el registro y si se borró, porque un historial es tan largo como el registro. Con un nombre son los cambios de tipo de inicio de ese servicio: las instalaciones se listan solo sin nombre, porque Windows registra una instalación bajo el nombre para mostrar y nunca bajo el nombre del servicio. Una cuenta se nombra donde este equipo puede nombrarla por sí mismo y se muestra como su SID en caso contrario, y los tipos de inicio vienen con las palabras que escribió Windows.

+
+
+

tool: respuestas ya hechas a problemas comunes

+

Las mismas herramientas que la ventana muestra en su pestaña Tools. bws tool las lista y bws tool fix lista las reparaciones rápidas: printer, sound, indexing y search, cada una un reinicio de un servicio de Windows junto con lo que depende de él, elegidas porque las propias páginas de solución de problemas de Microsoft lo sugieren. bws tool fix printer es exactamente bws restart Spooler --dependents: el mismo plan, la misma salida y los mismos códigos de salida, y como todo comando aquí que cambia algo no pregunta antes, así que --dry-run es la forma de mirar antes de que se ejecute.

+
+
+

license: qué hay dentro del archivo que descargó

+

No lee nada en absoluto (ni administrador de servicios, ni disco, ni red) y responde desde un registro compilado en el ejecutable. --components convierte el aviso en cada componente con su versión, su licencia y su procedencia. El mismo conjunto que lleva la lista de materiales publicada junto a la descarga, porque ambos se generan desde un único registro, y la razón por la que merece la pena: el programa es un archivo autónomo, así que no hay nada a su lado que un escáner pueda leer.

+
+
+
+
+ +
+
+

Ejemplos

+

Los planes de abajo se comprobaron con --dry-run contra el programa que describe esta página. Un comando que cambia algo no pregunta antes, así que --dry-run es la forma de mirar antes de que se ejecute. Spooler representa cualquier servicio: ponga en su lugar el nombre del suyo.

+
+

Buscar y leer

+
bws list                                       cada servicio y controlador de este equipo
+bws list --query "start:auto !status:running"  lo que debería estar en marcha y no lo está
+bws list --query "status:running" --memory     lo que usa el proceso de cada entrada en ejecución
+bws show Spooler                               todo lo que se sabe de una entrada
+bws show Spooler --full                        también los campos realmente vacíos
+

Mirar primero, cambiar después

+
bws restart Spooler --dry-run                el plan, y nada más
+bws restart Spooler --dependents             reiniciarlo junto con lo que depende de él
+bws stop Spooler --dependents --timeout 120  permitir dos minutos por paso sin progreso
+bws start-type WSearch delayed --dry-run     iniciarlo un poco después de las demás entradas automáticas
+bws start-type Spooler disabled --stop       deshabilitarlo y detenerlo en un solo plan
+

Un servicio que no se detiene

+
bws kill Spooler --dry-run          el proceso, y cada servicio que vive en él
+bws kill Spooler --restart          terminar el proceso solo si falla una detención, y luego devolverlo todo a su sitio
+bws kill Spooler --force --dry-run  un paso en lugar de dos: el proceso terminado de inmediato
+

Instantáneas y deriva

+
bws snapshot create before.json --note "before the patch"  congelar el equipo, con una nota guardada dentro
+bws snapshot diff before.json after.json                   dos archivos: dos días, o dos equipos
+bws snapshot diff before.json --live                       el archivo frente a este equipo tal como está ahora
+bws snapshot diff before.json --live --exit-code           lo mismo, terminando con 5 si la configuración se desvió
+

Quién lo cambió

+
bws history          cada cambio de tipo de inicio e instalación que contiene el registro del sistema
+bws history Spooler  los cambios de tipo de inicio de un servicio
+bws history --json   lo mismo como documento, con registro y cambios
+

Reparaciones rápidas

+
bws tool                      las herramientas que hay
+bws tool fix                  las reparaciones rápidas, y el servicio que hay detrás de cada una
+bws tool fix sound --dry-run  el plan para reiniciar los dos servicios de audio
+bws tool fix printer          reiniciar el Print Spooler con lo que depende de él
+

Qué hay dentro del archivo

+
bws license --components  cada componente, su versión, su licencia y su procedencia
+bws --version             la versión de este ejecutable
+

En un script de PowerShell

+
# las entradas que deberían estar en marcha y no lo están, como objetos
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# los archivos sin firmar, a una hoja de cálculo
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# lo que necesita un servicio
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# una comprobación nocturna que se bifurca según el código de salida
+bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
+switch ($LASTEXITCODE) {
+  0 { 'no configuration drift' }
+  5 { 'the configuration drifted' }
+  default { "no clean answer, exit code $LASTEXITCODE" }
+}
+

En cmd y en un archivo por lotes

+
rem un segundo comando solo cuando el primero no terminó limpiamente
+bws restart Spooler || echo the restart did not end cleanly
+
+rem en un archivo por lotes con la expansión retardada activada, el ! necesita un acento circunflejo
+bws list --query "start:auto ^!status:running"
+
+
+
+ +
+
+

Opciones

+

{{switch_count}} en total. La tercera columna son los comandos a los que pertenece cada una: una opción pasada a un comando que no la usa es un error con esa lista dentro, en lugar de un indicador ignorado en silencio.

+ {{table:switches}} +
+
+ +
+
+

Códigos de salida

+

{{exit_code_count}} finales, y cada uno es algo distinto que un script debe hacer. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.

+

Todo documento JSON es ASCII puro: una letra fuera de él se escribe como una secuencia de escape de seis caracteres que todo lector de JSON vuelve a convertir en la letra, de modo que bws list --json > file.json es UTF-8 válido y | ConvertFrom-Json lo lee bien sea cual sea la página de códigos de la consola. En el texto que lee una persona, un carácter que movería el terminal en lugar de imprimirse (un tabulador, un salto de línea, una secuencia de escape, una anulación de dirección) se muestra como su punto de código, <U+001B>.

+

-- termina las opciones, de modo que un servicio cuyo nombre empieza por un guion aún puede nombrarse: bws show -- -odd. Las líneas de comandos que la herramienta le entrega están escritas para PowerShell: un nombre con espacio va entre comillas dobles, que cmd lee igual, y un nombre que PowerShell expandiría dentro, como MSSQL$SQLEXPRESS, va entre comillas simples.

+ {{table:exit-codes}} +

Ctrl+C tiene tres niveles, y cada uno dice lo que cuesta el siguiente. El primero deja de avanzar y aun así devuelve lo que se había tomado, el segundo deja las cosas como están y aun así imprime el informe, el tercero termina el proceso. Una ejecución detenida a mano termina con 4 aunque cada paso hubiera llegado.

+

Cerrar la ventana de la consola cuenta como el primer Ctrl+C. Windows concede cinco segundos a un programa después de eso, y en ellos este deja de avanzar y devuelve lo que había derribado. Cerrar sesión y apagar lo terminan sin ningún aviso al que pudiera reaccionar, y una sesión remota interrumpida puede hacer lo mismo.

+
+
+ +
+
+

En una tarea programada

+

La forma para la que se construyó esta herramienta: congelar el equipo cuando se sabe que está bien, y preguntar cada noche si lo sigue estando.

+
# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sin deriva de configuración
+#   5 - la configuración se desvió, y drift.json dice en qué
+#   3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+

La ventana es la otra mitad del mismo motor: {{archive_window}} la contiene, y la página de descarga dice qué es cada archivo.

+
+
+ +
+
+

El argumento de la ventana

+

BetterWindowsServices.exe admite un argumento pensado para una persona: --catalogue abre una hoja de desarrollador que muestra cada componente de la ventana en cada estado y no lee nada de su equipo. Un segundo, --carry, es la forma en que una ventana entrega lo que mostraba a la copia de sí misma que reinicia como administrador. Nadie lo escribe, y se rechaza todo lo que contenga que esa ventana no pudiera haber escrito.

+
+
diff --git a/site/pages/cli-reference/page.json b/site/pages/cli-reference/page.json index 551e87da..8d1f7e01 100644 --- a/site/pages/cli-reference/page.json +++ b/site/pages/cli-reference/page.json @@ -8,6 +8,7 @@ "en": "cli-reference", "pl": "dokumentacja-cli", "de": "cli-referenz", - "fr": "reference-cli" + "fr": "reference-cli", + "es": "referencia-cli" } } diff --git a/site/pages/download/es.html b/site/pages/download/es.html new file mode 100644 index 00000000..4e0e935d --- /dev/null +++ b/site/pages/download/es.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Descarga +

Descomprima y ejecute, o instale

+

Versión {{version}}. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Un instalador firmado coloca en su lugar ambos programas en todo el equipo. Libre y gratuito bajo GPL-3.0.

+ +
+
+ +
+
+

Qué incluye la versión

+
+ + + + + + + +
ArchivoQué es
{{archive_window}}La ventana: BetterWindowsServices.exe, un ejecutable autónomo con su propio entorno de ejecución .NET dentro
{{archive_cli}}La línea de comandos: bws.exe, un ejecutable autónomo, para scripts, tareas programadas e integración continua
{{archive_installer}}El instalador: ambos programas en Program Files para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH del equipo
+
+

Tome uno o ambos: son dos clientes del mismo motor y ninguno necesita al otro. En un servidor, la línea de comandos es la más pequeña de las dos y hace todo lo que hace la ventana.

+

El instalador contiene exactamente lo que contienen los dos archivos. Se instala en silencio con msiexec /i {{archive_installer}} /qn, una versión más nueva se instala sobre una más antigua y no cierra nada de lo que se está ejecutando, así que cierre la ventana y cualquier bws en marcha antes de actualizar, porque una copia que siga abierta puede detenerse con un error. Desinstalar desde Configuración, Aplicaciones elimina los programas, la entrada del menú Inicio y la entrada del PATH, y deja intactos sus propios archivos.

+

Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.

+
+
+ +
+
+

Requisitos

+
    +
  • Windows 10 versión 1809 o posterior, o Windows Server 2019 o posterior. Solo 64 bits: un proceso de 32 bits lee rutas y claves del Registro redirigidas, lo que daría respuestas erróneas sin avisar.
  • +
  • Sin .NET que instalar. Ambos ejecutables llevan su propio entorno de ejecución .NET.
  • +
  • Derechos de administrador para cambiar cualquier cosa. Leer, buscar, las instantáneas y las comparaciones funcionan sin ellos, con menos entradas visibles y la herramienta diciéndolo arriba en lugar de fingir que la lista es todo el equipo.
  • +
+

La ventana guarda un archivo propio, la disposición en la que dejó la lista, en %APPDATA%\BetterWindowsServices. Una instantánea va donde usted le diga a bws snapshot create que la ponga, y al directorio actual cuando no lo hace.

+

El programa habla inglés. La ventana lee un archivo de idioma, languages\gui.<código>.json, colocado junto a ella y elegido según el idioma de Windows, sin ninguna opción. Una traducción es, por tanto, una contribución que se puede añadir sin recompilar: CONTRIBUTING.md explica cómo.

+
+
+ +
+
+

Antivirus y EDR

+

Esta herramienta hace lo que hace un administrador con los servicios, y parte de ello es lo que vigila el software de seguridad.

+

Detiene e inicia servicios, puede terminar el proceso que hay detrás de uno y lee el descriptor de seguridad y los privilegios requeridos de cada servicio. Un EDR que marca un proceso que termina svchost.exe hace su trabajo, y una detención forzada aquí puede parecerse exactamente a eso.

+

Lo que no hace, para que pueda comprobar la afirmación: no inyecta nada en ningún proceso, no empaqueta ni ofusca nada, no instala ningún servicio ni controlador y no deja nada en ejecución, y no abre ninguna conexión de red. Es de código abierto bajo GPL-3.0 y puede compilar usted mismo ambos ejecutables.

+

Si su política necesita una exclusión, excluya los dos ejecutables por archivo y no una carpeta. Lo único que merece el mismo cuidado que la propia herramienta es un archivo de instantánea: describe todo el equipo.

+
+
+ +
+
+

Compilar desde el código fuente

+

SDK de .NET 10, en Windows.

+
git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+

Algunas pruebas leen el administrador de control de servicios real del equipo en el que se ejecutan y comparan lo que dice esta herramienta con lo que dice sc.exe. Son de solo lectura. Los ejecutables de un solo archivo que llevan las versiones son estas dos publicaciones, cada una un archivo con el entorno de ejecución dentro:

+
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+

Aparecen como bws.exe y BetterWindowsServices.exe en bin/Release/.../win-x64/publish/ de cada proyecto. Los archivos .pdb que hay al lado son símbolos de depuración, y nada los necesita para ejecutarse.

+
+
+ +
+
+

Lo que cuesta ejecutarlo

+

Medido en un equipo con 810 servicios. Sus cifras serán distintas: el número de servicios, el disco y el procesador las mueven todas.

+
+

Cerca de un cuarto de segundo

para que bws list lea todo el equipo.

+

Cerca de ocho décimas de segundo

desde que se inicia la ventana hasta que la lista está en pantalla.

+

Cerca de 100 MB

para la ventana: la mitad es el marco de interfaz de usuario de Windows, antes de que se ejecute ningún código propio de esta herramienta.

+

Cerca de 16 MB

para la línea de comandos sobre el mismo equipo.

+
+
+
diff --git a/site/pages/download/page.json b/site/pages/download/page.json index b46da23b..b273bdda 100644 --- a/site/pages/download/page.json +++ b/site/pages/download/page.json @@ -8,6 +8,7 @@ "en": "download", "pl": "pobieranie", "de": "download", - "fr": "telechargement" + "fr": "telechargement", + "es": "descarga" } } diff --git a/site/pages/faq/es.html b/site/pages/faq/es.html new file mode 100644 index 00000000..96334377 --- /dev/null +++ b/site/pages/faq/es.html @@ -0,0 +1,78 @@ + + + + + +
+
+ Preguntas +

Preguntas y límites

+

Una herramienta que deja de cubrir algo en silencio es peor que una que dice lo que no puede hacer. Los límites también están en esta página, en dos grupos: lo que rechaza por diseño y lo que hace Windows y esta herramienta informa tal cual.

+
+
+ +
+
+
+
+

¿En qué se diferencia de sc.exe, Get-Service o services.msc?

+

sc query y Get-Service dicen qué se está ejecutando. services.msc permite cambiarlo, una fila cada vez, sin forma de hacer una pregunta y sin registro después. Esta herramienta hace la pregunta (start:auto !status:running), muestra el plan antes de actuar y guarda una instantánea que puede comparar una semana después. Cuando discrepa de sc.exe sobre un servicio, es un error: parte del conjunto de pruebas ejecuta ambos y los compara entrada por entrada. La comparación más larga está aquí.

+
+
+

¿Necesita Internet?

+

Nunca. Sin telemetría, sin comprobación de actualizaciones, sin informes de fallos, sin cuenta, sin cliente de nada. La única vez que puede tocar una red es cuando se pasa --follow-network: entonces puede mirar una ruta de lanzamiento en el recurso compartido de otro equipo y dejar que Windows obtenga un certificado que este equipo aún no tiene; está desactivado por defecto y la ayuda dice por qué. Los botones GitHub y Donate de la ventana y la página de su menú Help entregan cada uno una dirección fija a su navegador al pulsarlos, y es su navegador el que se conecta.

+
+
+

¿Necesita derechos de administrador?

+

Para consultar, no. Para cambiar, sí. Sin ellos el administrador muestra menos entradas y rechaza más, y ambas mitades lo dicen arriba en lugar de fingir que la lista es todo el equipo. La ventana ofrece Restart as admin. Nunca se eleva por sí misma.

+
+
+

¿Es gratuita? ¿Puedo usarla en el trabajo?

+

Sí a ambas. GPL-3.0, sin letra pequeña. Una instantánea que usted toma es su archivo.

+
+
+

¿Romperá mi servidor?

+

No por sí misma. No se cambia nada sin un plan que usted haya visto, los controladores se rechazan y un plan que derribaría algo que el equipo necesita lo dice. De lo que no puede protegerle es de ejecutar un plan que no leyó. La lista de servicios que el equipo necesita es una lista inicial de siete (las dos mitades de RPC y el iniciador de DCOM, el administrador de cuentas, el aislamiento de claves, el administrador de sesiones y Plug and Play), y el Escritorio remoto no está en ella, así que en una sesión remota, lea el plan.

+
+
+

¿Es un producto de Microsoft?

+

No. {{product}} es un proyecto de código abierto independiente y no está afiliado a Microsoft, ni respaldado ni patrocinado por Microsoft. Windows es una marca del grupo de empresas de Microsoft.

+
+
+

¿Está el programa en mi idioma?

+

No: el programa habla inglés, y por eso este sitio está traducido. La ventana lee un archivo de idioma, languages\gui.<código>.json, colocado junto al ejecutable y lo elige según el idioma de Windows, sin ninguna opción, de modo que una traducción es una contribución que se puede añadir sin recompilar el programa. Los nombres de los servicios de la lista son lo que dice su Windows: en el idioma en el que esté configurado.

+
+
+

¿Por qué la ventana es oscura cuando mi Windows es claro?

+

Es oscura y sigue siéndolo cualquiera que sea la configuración de Windows, incluido un tema de alto contraste. Eso está comprobado y no supuesto: conserva sus propios colores y sigue siendo legible, y no sigue esa configuración.

+
+
+
+
+ +
+
+

Por diseño

+
    +
  • Solo el equipo local. La administración remota no está en esta versión. Para comparar dos equipos, tome una instantánea en cada uno y compare los dos archivos.
  • +
  • Solo Windows, solo 64 bits, Windows 10 1809 o Windows Server 2019 y posteriores.
  • +
  • Las operaciones sobre controladores se rechazan en lugar de intentarse, porque detener un controlador del núcleo a menudo no es reversible sin reiniciar.
  • +
  • La herramienta no eleva sus propios privilegios. Cuando el administrador rechaza, lo dice y termina con el código de salida 3. La ventana se ofrece a reiniciarse como administrador y no hace nada más al respecto.
  • +
  • No se comprueba la revocación de certificados. Haría falta llegar a la red, y esta herramienta nunca lo hace. Así que Trusted significa que la cadena era válida en este equipo, no que nadie haya revocado el certificado desde entonces.
  • +
  • La ventana descomprime parte del marco de interfaz de usuario de Windows antes de iniciarse. Como un solo archivo lleva algunas bibliotecas nativas que Windows solo puede cargar desde el disco. Sin derechos de administrador las escribe, en el primer inicio de cada versión, en una carpeta .net bajo la carpeta temporal de la cuenta y las carga desde allí. Con derechos de administrador usa en su lugar ProgramData\BetterWindowsServices en la unidad de Windows: una carpeta que crea de modo que solo los administradores puedan modificarla, y que comprueba en cada inicio. Si esa carpeta no se puede crear, o si otros pueden modificarla, la ventana no se inicia y dice qué carpeta y qué hacer. Pasar allí significa que una ventana con privilegios elevados se inicia a sí misma una segunda vez, lo que tarda una fracción de segundo, y cada versión deja allí sus bibliotecas (unos 8 MB) hasta que alguien borra la carpeta. La línea de comandos no lleva tales bibliotecas y no descomprime nada.
  • +
  • Una sesión con privilegios elevados nombra la configuración de .NET que hereda en lugar de rechazarla. Un generador de perfiles, un conmutador de seguimiento o de volcado, o un puerto de diagnóstico definido en el entorno no puede desactivarse desde dentro de un programa .NET, así que con derechos de administrador ambas mitades listan los que encuentran. Los ganchos de inicio se desactivan por completo.
  • +
+
+
+ +
+
+

Cosas que hace Windows y esta herramienta informa tal cual

+
    +
  • Un servicio alojado dentro de svchost tiene una ruta de lanzamiento que nombra al host, de modo que el archivo está ahí y quién lo firmó dicen ambos menos que para un servicio con proceso propio.
  • +
  • Un archivo con firma propia y una entrada de catálogo de Windows puede nombrar dos firmantes distintos. El editor mostrado es el que está dentro del archivo, el que sigue siendo el mismo al mirar el archivo en otro equipo, y puede diferir de lo que informa PowerShell.
  • +
  • Sin derechos de administrador el administrador lista menos entradas y rechaza más de las que lista. Ambas mitades lo dicen arriba, y una instantánea lo registra, porque de otro modo comparar una instantánea con privilegios elevados con otra tomada sin derechos informaría como eliminadas entradas que nadie eliminó.
  • +
+

¿Ha encontrado un problema, o un servicio que esta herramienta informa de forma distinta a sc.exe? El seguimiento de incidencias está abierto, y una diferencia entre ambos es lo más útil que puede pegar en él.

+
+
diff --git a/site/pages/faq/page.json b/site/pages/faq/page.json index 77943af1..9d6b2f84 100644 --- a/site/pages/faq/page.json +++ b/site/pages/faq/page.json @@ -9,6 +9,7 @@ "en": "faq", "pl": "faq", "de": "faq", - "fr": "faq" + "fr": "faq", + "es": "preguntas-frecuentes" } } diff --git a/site/pages/home/es.html b/site/pages/home/es.html new file mode 100644 index 00000000..8d5097c0 --- /dev/null +++ b/site/pages/home/es.html @@ -0,0 +1,200 @@ + + + + + + + +
+
+
+

Busque sus servicios de Windows, vea cada cambio antes de ejecutarlo y descubra qué se ha desviado desde ayer

+

{{product}} es services.msc reconstruido para quienes administran equipos Windows: una ventana y una línea de comandos sobre un único motor. Haga una pregunta al equipo en lugar de recorrer ochocientas filas. Vea qué hará un cambio antes de pulsar nada. Y lo que services.msc nunca tuvo: congelar cada servicio en un archivo y, una semana después, preguntar qué cambió.

+ +
    +
  • Libre y gratuito, GPL-3.0
  • +
  • Un solo archivo, o un instalador
  • +
  • Sin derechos de administrador para consultar
  • +
  • Nunca se conecta a Internet
  • +
+
+
+ La ventana con cinco entradas seleccionadas y el plan para iniciarlas mostrado sobre la lista: cinco pasos, una nota de que dos de ellas ya están en ese estado, una línea bws start por cada entrada y el botón Start 5 entries. +
Entradas seleccionadas, un plan mostrado antes de que ocurra nada y la línea bws que pide exactamente lo mismo. El programa habla inglés: la ventana lee un archivo de idioma colocado junto a ella, así que es posible traducirla sin recompilar.
+
+
+
+ + +
+
+ Medio minuto con él +

Cómo se ve en uso

+

Una sesión real, en un Windows instalado en polaco: los nombres para mostrar vienen de Windows, así que están en su idioma. La ventana en sí habla inglés.

+
+ Cuatro entradas seleccionadas y el plan para iniciarlas, un reinicio forzado del Local Session Manager cuyo plan advierte de que el equipo no funciona sin él y pide su nombre antes de que el botón actúe, las preguntas de partida bajo el cuadro de búsqueda vacío y el Print Spooler encontrado escribiendo parte de su nombre e iniciado. +
Cuatro entradas seleccionadas y el plan para iniciarlas, un reinicio forzado que pide el nombre de un servicio que el equipo necesita, las preguntas bajo un cuadro de búsqueda vacío y el Print Spooler encontrado al escribir e iniciado.
+
+
+
+ La pantalla inicial: tres tarjetas de números sobre este equipo (servicios en ejecución, servicios de inicio automático que no arrancaron y servicios de inicio automático cuyo archivo ha desaparecido) y un botón Show the list. +
Se abre con unas cifras sobre este equipo. Cada una es una pregunta: pulse una y la pregunta pasa al cuadro de búsqueda.
+
+
+ La lista de servicios con las tres listas sobre el cuadro de búsqueda, un cuadro de búsqueda vacío, los botones de filtro abiertos en filas para estado, tipo de inicio, firma, desacuerdos y desencadenadores, y la lista debajo. +
Los botones de filtro escriben en el cuadro de búsqueda, de modo que lo que pulsó es una consulta que puede leer y editar.
+
+
+
+
+ +
+
+ Por qué existe +

services.msc apenas ha cambiado desde Windows 2000

+

Los administradores pasan horas a la semana en él chocando con las mismas paredes.

+
+
    +
  • Sin búsqueda. La única navegación es saltar a la primera letra de un nombre para mostrar.
  • +
  • Sin filtrado. No hay forma de preguntar muéstrame lo que está configurado para iniciarse automáticamente y no se está ejecutando.
  • +
  • Una fila cada vez. Reiniciar doce servicios son doce clics derechos y doce esperas.
  • +
  • "Deteniendo..." para siempre, sin más salida que el Administrador de tareas y adivinar el proceso.
  • +
  • Sin historial. Nadie sabe quién puso ese tipo de inicio en Deshabilitado, ni cuándo.
  • +
  • Datos ocultos. El proceso, los desencadenadores, los privilegios, el descriptor de seguridad, quién firmó el ejecutable: todo ello exige sc.exe de memoria, o el Registro.
  • +
  • Sin paridad en la línea de comandos. sc.exe tiene una sintaxis de los noventa, y el Get-Service que viene con Windows, en Windows PowerShell 5.1, no muestra la cuenta con la que se ejecuta un servicio, y mucho menos su descripción. PowerShell 7 muestra ambas y se instala por separado.
  • +
+
+

Las demás herramientas arreglan cada una una parte

+

Process Hacker y System Informer muestran una lista rica y pueden terminar un proceso a la fuerza, pero no tienen auditoría ni línea de comandos. sc.exe y PsService pueden hacerlo todo y no le dicen nada. Los cmdlets *-Service de PowerShell son programables y superficiales.

+

Nadie combina una lista en la que buscar, una vista previa antes de cada cambio y un registro de lo que cambió con el tiempo, y ese registro es la razón para conservar esta herramienta en un equipo pasada la primera tarde.

+ La comparación completa +
+
+
+
+ +
+
+ Qué hace +

Una ventana y una línea de comandos sobre un único motor

+
+

Preguntar, en lugar de desplazarse

start:auto !status:running significa lo que debería estar en marcha y no lo está. Un único lenguaje, en el cuadro de búsqueda y en bws list --query, con los campos sugeridos mientras escribe.

+

Mostrar el plan antes de que ocurra nada

Cada detención, inicio, reinicio y cambio de tipo de inicio se previsualiza con los servicios que arrastra consigo, y la vista previa es lo que se ejecuta.

+

Decirle qué se desvió y quién lo cambió

bws snapshot create congela el equipo en un archivo y bws snapshot diff dice qué cambió desde entonces, la configuración aparte de lo que simplemente se inició o se detuvo. bws history dice, a partir del registro del sistema, quién cambió un tipo de inicio y quién instaló un servicio. La ventana hace las tres cosas en Audit....

+

Arreglar un problema común con un clic

La pestaña Tools y bws tool fix reinician el servicio que hay detrás de una impresora que no imprime, un sonido que ha desaparecido o una búsqueda atascada, junto con lo que depende de él, mediante el mismo plan que todo lo demás.

+

Detener un servicio que no se detiene

Primero pide amablemente y termina el proceso solo si eso falla, nombrando cada otro servicio que vive en él.

+

Mostrar lo que services.msc oculta

Quién firmó el ejecutable y si Windows confía en él, desencadenadores, privilegios, el descriptor de seguridad, el proceso y su memoria. Como columnas y como criterios de búsqueda.

+

Avisar cuando no pudo leer algo

Un campo que no pudo leer se informa como no leído, nunca se muestra como vacío. Una instantánea tomada sin derechos de administrador lo dice dentro del propio archivo.

+

Encajar en los scripts

--json en cada comando, un código de salida para cada final y 5 cuando una comparación encuentra deriva.

+

Ejecutarse desde un solo archivo, sin conexión

Descomprima y ejecute, o instálelo para todo el equipo. Sin .NET que instalar, y nunca se conecta a Internet. Consultar no requiere derechos de administrador. GPL-3.0.

+
+
+
+ +
+
+ Lo que services.msc nunca hizo +

Qué cambió desde ayer

+

Una instantánea es el equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento, el hash y el firmante de su archivo, sus dependencias, desencadenadores, privilegios y descriptor de seguridad. Es JSON con un campo por línea, así que cabe en un repositorio y git diff lo lee.

+
+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
    +
  • La configuración y el estado de ejecución se informan por separado. Dos instantáneas tomadas con un día de diferencia difieren en lo que casualmente está en marcha, y casi nada de eso es deriva: el tipo de inicio que cambió es la línea que hay que leer.
  • +
  • Lo que no pudo compararse se lista, no se oculta. Un campo que una instantánea nunca leyó sale como not compared, de modo que una comparación que dice nada cambió significa que nada cambió en lo que ambos lados podían ver.
  • +
  • --exit-code termina con 5 cuando la configuración difiere, de modo que una tarea programada puede tomar una instantánea en el despliegue y avisar a alguien la primera noche que el equipo se desvíe.
  • +
  • Dos equipos, dos archivos. Tome una instantánea en preproducción y otra en producción, y compárelas en cualquier parte.
  • +
+
+ Cómo funcionan las instantáneas y la deriva +
+
+ +
+
+ Nada ocurre sin un plan +

La vista previa es la ejecución

+

Toda operación que escribe construye primero un plan, y ese mismo plan es la vista previa, la cascada de servicios dependientes, el rechazo antes de que pulse nada, la línea de comandos que pide lo mismo y el camino de vuelta después.

+
+
$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt  (2 steps)
+  1. stop  vmms      (would break otherwise)
+  2. stop  Winmgmt   (asked for)
+
+Warnings:
+  - Stopping Winmgmt also stops one other entry: vmms
+  - Winmgmt starts automatically, so it will be back after the next restart.
+
    +
  • Ejecútelo sin --dry-run y esos son los pasos, en ese orden, con las mismas razones al lado. No hay un segundo camino de código para la ejecución real.
  • +
  • Lo que cae con él está en el plan. Los servicios que dejarían de funcionar son pasos propios, y un plan que derribaría algo que el equipo necesita lo dice en sus advertencias.
  • +
  • Un rechazo llega antes del botón. Un controlador, un servicio para el que el administrador no acepta una detención, un proceso que el sistema protege: se rechazan al construir el plan, con la razón. La ventana atenúa el botón y dice por qué a su lado.
  • +
  • La detención forzada son dos pasos, y el segundo es condicional. bws kill pide al servicio que se detenga y termina su proceso solo si eso no funciona, nombrando cada otro servicio que vive en él.
  • +
+
+ Cuando un servicio no se detiene +
+
+ +
+
+ Dos minutos con él +

Desde la línea de comandos

+

El mismo motor que la ventana, para scripts, tareas programadas e integración continua. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.

+
bws list --query "start:auto !status:running"     lo que debería estar en marcha y no lo está
+bws list --query "file:missing"                   servicios cuyo ejecutable ha desaparecido
+bws list --query "signed:no peruser:no"           sin firmar, sin las copias por sesión
+bws show Spooler                                  todo lo que se sabe de una entrada
+bws stop Winmgmt --dry-run --dependents           lo que arrastraría detenerlo
+bws kill Spooler --dry-run                        lo que se llevaría terminar su proceso
+bws start-type Spooler manual --dry-run           lo que haría quitarlo del inicio automático
+bws snapshot create before.json                   congelar el equipo antes de un cambio
+bws snapshot diff before.json --live --exit-code  qué ha cambiado desde entonces, 5 si la configuración cambió
+bws history Spooler                               quién cambió su tipo de inicio, y cuándo
+bws tool fix printer --dry-run                    lo que haría la reparación rápida de una impresora atascada
+ Cada comando, opción y código de salida +
+
+ +
+
+ Cómo conseguirlo +

Descomprima y ejecute, o instale

+

Windows 10 1809 o Windows Server 2019 y posteriores, de 64 bits. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Cambiar cualquier cosa exige una sesión con privilegios elevados, y ambas mitades lo dicen en lugar de fallar en silencio: la ventana ofrece Restart as admin.

+
+ + + + + + + +
ArchivoQué es
{{archive_window}}La ventana, un ejecutable autónomo: sin .NET que instalar
{{archive_cli}}La línea de comandos, un ejecutable autónomo, para scripts e integración continua
{{archive_installer}}El instalador: ambos programas para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH
+
+

Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.

+ +
+
diff --git a/site/pages/home/page.json b/site/pages/home/page.json index 43be65de..9c6a59ac 100644 --- a/site/pages/home/page.json +++ b/site/pages/home/page.json @@ -8,6 +8,7 @@ "en": "", "pl": "", "de": "", - "fr": "" + "fr": "", + "es": "" } } diff --git a/site/pages/query-language/es.html b/site/pages/query-language/es.html new file mode 100644 index 00000000..03e47a7a --- /dev/null +++ b/site/pages/query-language/es.html @@ -0,0 +1,178 @@ + + + + + + + +
+
+ El lenguaje de consulta +

Haga una pregunta al equipo

+

Un único lenguaje, en el cuadro de búsqueda de la ventana y en bws list --query. Una palabra suelta busca en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento. Un campo la acota. {{field_count}} campos, y el mismo texto significa lo mismo en ambas mitades de la herramienta.

+
+
+ +
+
+

Seis que responden a una pregunta real

+
+

Lo que debería estar en marcha y no lo está

start:auto !status:running

La primera consulta que escribe casi todo el mundo, y la que services.msc no puede responder en absoluto.

+

Servicios cuyo archivo ha desaparecido

file:missing

Una entrada que apunta a un ejecutable que no está en el disco. Normalmente una desinstalación que dejó el registro tras de sí.

+

Sin firmar, sin el ruido de las sesiones

signed:no peruser:no

Las familias por usuario hacen una copia por sesión y llenan una lista de casi duplicados. Esto pregunta por el resto.

+

En marcha aunque esté deshabilitado

mismatch:running

Configuración y estado que no concuerdan: una entrada que el administrador tiene configurada para no iniciarse nunca, ejecutándose igualmente.

+

Todo lo que pide derechos de depuración

privilege:SeDebugPrivilege

Un privilegio que permite a un proceso abrir cualquier otro. Conviene saber qué servicios lo piden.

+

Lo que la herramienta no pudo leer

account:?

Las entradas cuya cuenta esta sesión no pudo leer. Una pregunta que services.msc ni siquiera puede hacer.

+
+
+
+ +
+
+

Cómo se escribe una consulta

+
+
+

Términos

+
    +
  • Los términos se separan con espacios y todos deben coincidir: no hay palabra clave and porque no podría significar otra cosa.
  • +
  • El mismo campo escrito dos veces es la única excepción: status:running status:stopped significa uno u otro, porque eso es lo que escribe marcar dos filtros. Dos límites sobre un número sí acotan: pid:>1000 pid:<2000 es el intervalo entre ambos.
  • +
  • ! delante de un término lo niega: !status:running. En un archivo por lotes con setlocal EnableDelayedExpansion, cmd se come ese ! sin decir nada y la consulta significa en silencio otra cosa: escriba ^! entre las comillas allí.
  • +
  • Una coma dentro de un campo es un o: start:manual,disabled.
  • +
  • Las comillas protegen todo lo que lleve espacios o dos puntos: account:"NT SERVICE\McmSvc".
  • +
  • Una ruta pegada tal cual, C:\Windows\System32\svchost.exe, se busca, no se lee como un campo llamado C.
  • +
+
+
+

Cómo se compara el texto

+
    +
  • name:spool coincide con todo lo que lo contiene: es lo predeterminado, porque es lo que se espera de un cuadro de búsqueda.
  • +
  • name:=spooler es exacto.
  • +
  • name:spool* admite comodines, * y ?.
  • +
  • name:/^Sql.*/ es una expresión regular, y entre las barras se escribe como se escriben las expresiones regulares: \?, \\ y una coma significan allí lo que significan allí. Una barra que nunca se cierra es un error; para buscar la propia barra, escriba \/ o use comillas.
  • +
  • Se ignoran las mayúsculas y minúsculas, también fuera de ASCII: un nombre para mostrar en polaco o en griego coincide se escriba como se escriba.
  • +
+
+
+

Tres palabras que acepta cualquier campo

+ {{list:reserved-words}} +

Un valor mal escrito es un error, nunca un resultado vacío. status:runing responde Did you mean running? y termina con el código 2. Una lista vacía parecería una respuesta, y la diferencia entre "nada coincide" y "lo escribió mal" es la diferencia entre un equipo limpio y una auditoría que no demostró nada. Una consulta que no acotaría nada también se rechaza en la línea de comandos, para que un script no opere sobre todo el equipo por una errata.

+
+
+ +
+
+

Más ejemplos

+

Cada uno funciona igual en el cuadro de búsqueda de la ventana y después de bws list --query, y cada uno se ejecutó en un Windows real antes de escribirse aquí. Lo que encuentra depende del equipo, y para una pregunta sobre problemas, una respuesta vacía es la que usted quiere.

+
+

Estado y tipo de inicio

+
+ + + + + + + + +
ConsultaQué encuentra
status:stopPending,startPendingAtascados al detenerse o al iniciarse: la espera que muestra el complemento y que nunca termina.
start:auto status:stopped trigger:noneConfigurados para iniciarse automáticamente, detenidos y sin esperar a un desencadenador: la lista corta que vale la pena leer tras un reinicio.
start:delayedAutomático, iniciado un poco después de las demás entradas automáticas.
start:manual,disabled status:runningEn marcha aunque nada lo inicie al arrancar: algo lo pidió, un desencadenador lo inició o alguien lo hizo.
+
+

Cuentas

+
+ + + + + + + +
ConsultaQué encuentra
account:localsystem !publisher:microsoftSe ejecuta como LocalSystem, la cuenta más poderosa, desde un archivo que Microsoft no firmó. Una consulta sobre el editor lee las firmas por sí sola, así que tarda unos segundos.
!account:localsystem,localservice,networkservice type:ownProcess,sharedProcessServicios que se ejecutan bajo cualquier otra cuenta: una virtual, una administrada o la de una persona.
account:"NT SERVICE"Una cuenta virtual del propio servicio. Las comillas mantienen juntas las palabras, por el espacio.
+
+

Archivos y firmas

+
+ + + + + + + + + + +
ConsultaQué encuentra
signed:notSigned,untrustedRoot,tamperedSin firma, una cadena en la que Windows no confía, o un archivo modificado después de firmarse.
signed:trusted !publisher:microsoftFirmado, de confianza y no por Microsoft: el software que otras empresas han puesto en este equipo.
type:driver start:boot,system !signed:trustedControladores cargados al arrancar Windows cuya firma Windows no considera de confianza. En un equipo sano, ninguno.
!path:C:\Windows type:ownProcessUn servicio con proceso propio cuyo archivo está fuera de la carpeta de Windows.
path:\AppData\Lanzado desde dentro del perfil de alguien, el último lugar donde se espera un servicio.
path:\System32\\ type:ownProcessUna barra invertida delante de un espacio hace que el espacio forme parte de la palabra, así que una ruta que acaba en barra invertida se escribe con dos cuando le sigue otro término. Al final de la consulta basta una.
+
+

Desencadenadores y dependencias

+
+ + + + + + + + + +
ConsultaQué encuentra
trigger:device status:stoppedEsperando a que llegue un dispositivo, por lo que están detenidos por una razón.
trigger:networkIniciado cuando llega una solicitud a un punto de conexión de red: un puerto, una canalización con nombre o una interfaz RPC.
trigger:stopEntradas que un desencadenador puede detener, no solo iniciar.
dependson:WinmgmtEntradas que necesitan WMI para ejecutarse.
requiredby:SpoolerTodo lo que el Print Spooler necesita para ejecutarse, y lo que a su vez necesitan esos.
+
+

Privilegios y procesos

+
+ + + + + + + + + + +
ConsultaQué encuentra
privilege:SeTcbPrivilegePide actuar como parte del sistema operativo.
privilege:SeImpersonatePrivilege !account:localsystemPuede actuar en nombre de un cliente mientras se ejecuta bajo una cuenta distinta de LocalSystem.
sidtype:unrestrictedLleva en su proceso un SID de servicio propio, de modo que los permisos pueden nombrarlo a él solo. sidtype:restricted pregunta por aquellos cuyo proceso además tiene restringida la escritura.
type:sharedProcess status:runningEn ejecución dentro de un svchost compartido, junto con otros.
memory:>200MBUn proceso que usa más de 200 MB. La memoria se lee por sí sola cuando una consulta pregunta por ella.
pid:1000-2000En un proceso cuyo identificador está entre 1000 y 2000.
+
+

Nombres y texto

+
+ + + + + + + + + + + +
ConsultaQué encuentra
spoolUna palabra suelta, buscada en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento.
name:=wuauservExactamente este nombre, y nada que solo lo contenga.
name:win*Nombres que empiezan por win, escritos con un comodín.
name:/svc$/Nombres que terminan en svc, escritos como expresión regular.
description:noneNinguna descripción en absoluto, que es el caso de la mayoría de los controladores.
description:?Una descripción que Windows no pudo entregar, normalmente porque apunta a un archivo de idioma que no está.
peruser:templateLas plantillas por usuario que Windows copia para cada sesión iniciada.
+
+
+
+
+ +
+
+

Cada campo

+

Construida a partir del propio programa, de modo que esta tabla no puede desviarse de lo que acepta la herramienta. Un campo sin lista de valores acepta texto, un número o un tamaño; la tercera columna dice cuál.

+ {{table:query-fields}} +
+
+ +
+
+

Dos cosas que conviene saber

+
+
+

Algunos campos son caros, y pedirlos activa la lectura

+

Las firmas tardan varios segundos en todo un equipo y la memoria es una medición y no un ajuste, así que ninguna se lee para un listado salvo que se pida. Una consulta que menciona una activa esa lectura por sí sola: no tiene que acordarse de --signatures además de signed:no. En la ventana, una consulta sobre firmas dice que la respuesta está incompleta hasta que llegan, en lugar de mostrar una lista más corta como si fuera la respuesta.

+
+
+

Un resultado juzgado sobre algo ilegible lo dice

+

Si se juzgaron entradas por un campo que esta sesión no pudo leer, el resultado lleva una línea que dice cuántas, porque un resultado así puede estar omitiendo entradas, o contener otras que no corresponden. Es la misma regla que sigue toda la herramienta: una lectura fallida es visible en la respuesta, nunca se traga. Un editor recibe el mismo trato cuando solo el certificado lo afirma: junto a cualquier veredicto que no sea trusted el nombre se muestra como not verified, y publisher: cuenta la entrada como dudosa en una línea aparte, de modo que !publisher:microsoft conserva un archivo de Microsoft que alguien modificó después de firmarse.

+
+
+ La referencia de la línea de comandos +
+
diff --git a/site/pages/query-language/page.json b/site/pages/query-language/page.json index 6983be1d..d35ebe45 100644 --- a/site/pages/query-language/page.json +++ b/site/pages/query-language/page.json @@ -8,6 +8,7 @@ "en": "query-language", "pl": "jezyk-zapytan", "de": "abfragesprache", - "fr": "langage-de-requete" + "fr": "langage-de-requete", + "es": "lenguaje-de-consulta" } } diff --git a/site/pages/sc-exe-and-powershell/es.html b/site/pages/sc-exe-and-powershell/es.html new file mode 100644 index 00000000..146d63e5 --- /dev/null +++ b/site/pages/sc-exe-and-powershell/es.html @@ -0,0 +1,97 @@ + + + + + +
+
+ Guía +

sc.exe, Get-Service y esto

+

Ambos ya están en el equipo, y ambos seguirán siendo útiles. Esta página trata de dónde se detienen, y dice con claridad dónde siguen siendo la mejor respuesta.

+
+
+ +
+
+

Dónde se detiene cada uno

+
+
+

sc.exe

+

Alcanza casi todo lo que sabe el administrador de control de servicios, y no le dice nada sobre cómo preguntar. La sintaxis es de los noventa: sc config X start= auto, donde el espacio tras el signo igual es obligatorio y su ausencia es un fallo silencioso al hacer lo que usted quería.

+

Responde sobre una entrada cada vez. No hay filtrado, ni una salida que un script pueda analizar sin escribir un analizador, ni vista previa: sc stop o funciona o devuelve un número.

+
+
+

Get-Service y los cmdlets *-Service

+

Objetos de verdad, una canalización y una vista superficial. En Windows PowerShell 5.1, el que viene con Windows, Get-Service no muestra la cuenta con la que se ejecuta un servicio ni su descripción. PowerShell 7 muestra ambas, y también la ruta de lanzamiento, y se instala por separado.

+

Stop-Service -Force significa "aunque algo dependa de él": detiene a los dependientes, y se lo dice después y no antes.

+
+
+
+
+ +
+
+

Las mismas preguntas, de tres maneras

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PreguntaCon lo que hay en el equipoAquí
Qué debería estar en marcha y no lo estáGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }bws list --query "start:auto !status:running"
Qué servicios tienen un ejecutable sin firmarLeer cada ruta de lanzamiento, resolverla, llamar a Get-AuthenticodeSignature en cada una: un script, no un comandobws list --query "signed:no"
Qué arrastraría detener estesc enumdepend X, y luego leer la lista y decidir usted mismobws stop X --dry-run --dependents, que es el plan que se ejecutaría
Qué cambió desde la semana pasadaNada, salvo que haya escrito usted el recolectorbws snapshot diff before.json --live
Quién cambió el tipo de inicio, y cuándoGet-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, y luego leer el mensaje de cada eventobws history Spooler, cuya primera línea dice hasta dónde llega el registro
Salida legible por máquinaObjetos de PowerShell, texto de sc.exe--json en cada comando, por la salida estándar, con las advertencias por el error estándar
+
+

Cuando esta herramienta discrepa de sc.exe sobre un servicio, es un error de esta. Parte del conjunto de pruebas ejecuta ambos contra el equipo en el que está y los compara entrada por entrada, y una diferencia entre los dos es lo más útil que puede poner en una incidencia.

+
+
+ +
+
+

Cuándo seguir usando lo que ya tiene

+
    +
  • Está en un equipo que tocará una sola vez. Ambos ya están ahí y nada tiene que pasar una política.
  • +
  • Necesita cambiar la cuenta, la ruta de lanzamiento o las acciones de recuperación. sc.exe hace las tres cosas. Esta herramienta muestra la cuenta y la ruta de lanzamiento y no cambia ninguna, y lee las acciones de recuperación solo para avisar antes de terminar un proceso.
  • +
  • Necesita crear o eliminar un servicio. sc create y sc delete. No aquí, a propósito.
  • +
  • Ya está metido de lleno en una canalización de PowerShell. bws list --json vuelve como objetos con ConvertFrom-Json, así que se une a la canalización en lugar de sustituirla.
  • +
+
+
+ +
+
+

Juntos, en lugar de en su lugar

+

La herramienta que responde a qué le pasa a este equipo y las herramientas que cambian un ajuste no son la misma herramienta. Haga la pregunta aquí, lea el plan aquí y use lo que prefiera para ejecutarlo: el plan imprime la línea de comandos que pide lo mismo, y esa línea está hecha para copiarse.

+ +
+
diff --git a/site/pages/sc-exe-and-powershell/page.json b/site/pages/sc-exe-and-powershell/page.json index 9edb81a8..cd95efef 100644 --- a/site/pages/sc-exe-and-powershell/page.json +++ b/site/pages/sc-exe-and-powershell/page.json @@ -8,6 +8,7 @@ "en": "sc-exe-and-powershell", "pl": "sc-exe-i-powershell", "de": "sc-exe-und-powershell", - "fr": "sc-exe-et-powershell" + "fr": "sc-exe-et-powershell", + "es": "sc-exe-y-powershell" } } diff --git a/site/pages/services-msc-alternative/es.html b/site/pages/services-msc-alternative/es.html new file mode 100644 index 00000000..85128f86 --- /dev/null +++ b/site/pages/services-msc-alternative/es.html @@ -0,0 +1,102 @@ + + + + + +
+
+ Guía +

Una alternativa a services.msc

+

El complemento Servicios apenas ha cambiado desde Windows 2000. Sigue siendo la forma más rápida de iniciar un servicio que ya ve en pantalla, y la más lenta de responder a cualquier pregunta sobre un equipo.

+
+
+ +
+
+

Lo que lleva a la gente a buscar otra cosa

+
+
    +
  • Sin búsqueda. La única navegación es escribir una letra para saltar al primer nombre para mostrar que empieza por ella. En un equipo con ochocientas entradas, eso es desplazarse con pasos extra.
  • +
  • Sin filtrado. No hay forma de preguntar qué está configurado para iniciarse automáticamente y no se está ejecutando, la única pregunta que encuentra un equipo averiado.
  • +
  • Una fila cada vez. Reiniciar doce servicios son doce clics derechos y doce esperas.
  • +
  • "Deteniendo..." sin salida salvo el Administrador de tareas y adivinar qué svchost terminar.
  • +
+
    +
  • Sin historial. Nadie sabe quién puso ese tipo de inicio en Deshabilitado, ni cuándo, ni si ya estaba así el mes pasado.
  • +
  • Datos ocultos. El proceso, los desencadenadores, los privilegios requeridos, el descriptor de seguridad, quién firmó el ejecutable: nada de eso está en el complemento, y todo importa cuando algo va mal.
  • +
  • Las columnas no pueden cambiar. Nombre, descripción, estado, tipo de inicio, iniciar sesión como. Esa es toda la lista, y ninguna puede ordenarse de forma útil en un equipo real.
  • +
+
+
+
+ +
+
+

Las mismas tres tareas, en ambos

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Usted quiereEn services.mscAquí
Encontrar lo que debería estar en marcha y no lo estáOrdenar por tipo de inicio, desplazarse, leer cada filastart:auto !status:running
Saber qué arrastra consigo una detenciónUn cuadro de diálogo que nombra a los dependientes después de pulsar DetenerUn plan antes de que ocurra nada, con cada dependiente como paso y una advertencia cuando uno es algo que el equipo necesita
Saber qué cambió desde la semana pasadaNadabws snapshot diff before.json --live
Saber quién cambió un tipo de inicioNadabws history Spooler, a partir del registro del sistema
Reiniciar doce serviciosDoce clics derechosSeleccionar doce, un plan, una ejecución, un informe
Ver quién firmó el ejecutable de un servicioNo se muestraUna columna, y algo por lo que buscar: signed:no
Automatizar cualquiera de ello con un scriptNo se puede automatizarbws, con --json y un código de salida para cada final
+
+
+
+ +
+
+

Lo que el complemento aún hace mejor

+

Dos cosas, y fingir lo contrario sería el tipo de afirmación que este proyecto no hace.

+
    +
  • Ya está en el equipo. Nada que descargar, nada que pasar por una política de software. En un equipo que tocará una sola vez, ese es todo el argumento.
  • +
  • Edita las acciones de recuperación, la cuenta y la ruta de lanzamiento. Esta herramienta muestra la cuenta y la ruta de lanzamiento y no cambia ninguna, y lee las acciones de recuperación solo para avisar antes de terminar un proceso. Crear, eliminar o redirigir un servicio tampoco está aquí.
  • +
+

Lo que no puede hacer en absoluto es la razón de que esto exista: hacer una pregunta, mostrar primero un plan y decirle qué se desvió.

+
+
+ +
+
+

Qué es esto

+

{{product}} es libre y gratuito bajo GPL-3.0, un archivo por mitad o un instalador para todo el equipo, y nunca se conecta a Internet. Consultar no requiere derechos de administrador; cambiar sí, y lo dice en lugar de fallar en silencio.

+ +
+
diff --git a/site/pages/services-msc-alternative/page.json b/site/pages/services-msc-alternative/page.json index 62e0ad49..cd527327 100644 --- a/site/pages/services-msc-alternative/page.json +++ b/site/pages/services-msc-alternative/page.json @@ -8,6 +8,7 @@ "en": "services-msc-alternative", "pl": "alternatywa-dla-services-msc", "de": "services-msc-alternative", - "fr": "alternative-a-services-msc" + "fr": "alternative-a-services-msc", + "es": "alternativa-a-services-msc" } } diff --git a/site/pages/snapshots-and-drift/es.html b/site/pages/snapshots-and-drift/es.html new file mode 100644 index 00000000..5311a6a7 --- /dev/null +++ b/site/pages/snapshots-and-drift/es.html @@ -0,0 +1,65 @@ + + + + + +
+
+ Lo que services.msc nunca hizo +

Instantáneas y deriva

+

Toda otra herramienta le dice cómo se ve un equipo ahora. La pregunta que de verdad tiene un administrador es qué es distinto de cuando funcionaba, y ningún Windows de serie la responde.

+
+
+ +
+
+

Qué contiene una instantánea

+

El equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento y argumentos, el hash y el firmante del archivo que ejecuta, sus dependencias y lo que depende de él, sus desencadenadores, sus privilegios requeridos, su tipo de SID y su descriptor de seguridad, además del nombre del equipo, la cuenta que la tomó y si esa cuenta era administrador.

+
bws snapshot create before.json --note "before the patch"
+

Es JSON con un campo por línea. Es deliberado: significa que una instantánea cabe en un repositorio y git diff la lee, de modo que la comparación de la propia herramienta no es la única forma de mirar una.

+

Archívela como lo que es. Una instantánea describe todo el equipo, hasta cada ruta de lanzamiento y cada descriptor de seguridad. Se escribe con los permisos que su directorio ya tiene, y la herramienta no restringe nada: un directorio que otras personas pueden leer es uno en el que pueden leer todo eso.

+
+
+ +
+
+

Después, preguntar qué es distinto

+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
+
    +
  • La configuración y el estado de ejecución se informan por separado. Dos instantáneas tomadas con un día de diferencia difieren en lo que casualmente está en marcha, y casi nada de eso es deriva. Mezclado, el único renglón que importa, un tipo de inicio que alguien cambió, queda enterrado bajo cuarenta que no.
  • +
  • Lo que no pudo compararse se lista, no se oculta. Un campo que una de las dos instantáneas nunca leyó, porque esa sesión no tenía derechos sobre él, sale como not compared bajo su entrada, y el resumen cuenta esas entradas. Así, una comparación que dice nada cambió significa que nada cambió en lo que ambos lados podían ver.
  • +
+
    +
  • Una instantánea con privilegios elevados frente a una sin ellos mentiría, informando como eliminadas entradas que nadie eliminó. Cada archivo registra si la cuenta que lo tomó era administrador, y la comparación lo dice.
  • +
  • Dos archivos, no solo un archivo y este equipo. Tome una en preproducción y otra en producción y compárelas en cualquier parte: la respuesta a por qué difiere preproducción no necesita ninguno de los dos equipos presentes.
  • +
+
+

La ventana hace lo mismo en Audit.... Take snapshot... escribe el mismo archivo, con una nota si escribe una, y Compare with this machine... o Compare two snapshots... muestra qué cambió en lugar de la lista, una fila por campo, con todo lo que hace la comparación menos que exacta dicho sobre la tabla. Show la acota a las diferencias o a un campo, y Export... la escribe en un archivo CSV.

+
+
+ +
+
+

El código de salida es lo esencial

+

--exit-code termina con 5 cuando la configuración difiere: una entrada añadida o eliminada, o una configurada de otro modo. Un servicio que solo se detuvo o inició por sí mismo se informa y no cuenta, y tampoco las copias por usuario que Windows hace para cada sesión iniciada, que se dejan fuera y se cuentan. No es un fallo (encontrar deriva es para lo que sirve esta herramienta, y encontrarla no es un fallo), por lo que tiene un número propio en lugar de tomar prestado el que significa que algo fue mal.

+
# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sin deriva de configuración
+#   5 - la configuración se desvió, y drift.json dice en qué
+#   3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+

Ese es todo el mecanismo: una línea base tomada cuando se sabía que el equipo estaba bien, y una pregunta hecha cada noche. Si la primera noche responde 5, alguien se entera la primera noche y no la mañana en que algo se rompe.

+ Usarlo para una auditoría +
+
diff --git a/site/pages/snapshots-and-drift/page.json b/site/pages/snapshots-and-drift/page.json index 465c2dd0..1709ed28 100644 --- a/site/pages/snapshots-and-drift/page.json +++ b/site/pages/snapshots-and-drift/page.json @@ -8,6 +8,7 @@ "en": "snapshots-and-drift", "pl": "snapshoty-i-dryf", "de": "snapshots-und-drift", - "fr": "instantanes-et-derive" + "fr": "instantanes-et-derive", + "es": "instantaneas-y-deriva" } } diff --git a/site/pages/stop-a-service-that-will-not-stop/es.html b/site/pages/stop-a-service-that-will-not-stop/es.html new file mode 100644 index 00000000..b0aa07b5 --- /dev/null +++ b/site/pages/stop-a-service-that-will-not-stop/es.html @@ -0,0 +1,68 @@ + + + + + +
+
+ Guía +

Un servicio atascado en Deteniendo...

+

El complemento muestra Deteniendo y no se mueve. La respuesta habitual es el Administrador de tareas, adivinar en qué svchost.exe vive y Finalizar tarea, que termina también todos los demás servicios de ese proceso sin decirle cuáles eran.

+
+
+ +
+
+

Por qué ocurre

+
    +
  • El servicio no responde a la solicitud de detención. Windows se lo pide con educación y espera. Un servicio que se ha colgado, o que espera algo que no volverá, nunca responde.
  • +
  • Algo que depende de él sigue en ejecución. El administrador rechaza la detención en lugar de romper lo otro, y el complemento lo muestra como una espera.
  • +
  • Comparte su proceso con otros. La mayoría de los servicios de Windows viven dentro de un svchost.exe compartido. Terminar ese proceso los termina a todos, que es exactamente lo que hace el Administrador de tareas sin nombrarlos.
  • +
+
+
+ +
+
+

Mire antes de terminar nada

+

Pregunte qué se llevaría consigo terminarlo. No ocurre nada hasta que quite --dry-run.

+
$ bws kill Spooler --dry-run
+

La vista previa nombra el proceso por su número, nombra cada otro servicio que vive en él y muestra dos pasos en lugar de uno: pedir al servicio que se detenga y, solo si eso no funciona, terminar el proceso. Un servicio que se detiene por sí solo nunca se termina.

+
+
    +
  • --force omite el paso cortés y termina el proceso de inmediato. Cambia el plan y no su ejecución, de modo que la vista previa muestra un paso en lugar de dos y la diferencia es visible antes de que ocurra nada.
  • +
  • --restart lo devuelve todo a su sitio una vez desaparecido el proceso: la entrada por la que preguntó y todo lo que compartía su proceso. Sin él, el equipo queda con esos servicios detenidos, y el informe dice cómo volver a iniciarlos.
  • +
+
    +
  • El rechazo llega antes del botón. Un controlador, un proceso que el sistema protege, un servicio para el que el administrador no acepta una detención: se rechazan al construir el plan, con la razón, en lugar de tras una espera de sesenta segundos.
  • +
  • Una advertencia cuando importa. Si la entrada es una sin la cual el equipo no funciona, el plan lo dice: detenerla derriba el equipo, no solo el servicio.
  • +
+
+

Terminar un proceso es lo único que hace esta herramienta que nadie puede rechazar en nombre del equipo. Por eso es un comando propio, por eso la vista previa nombra cada servicio que se lleva consigo y por eso el paso cortés va primero salvo que usted diga otra cosa.

+
+
+ +
+
+

El orden más seguro

+
    +
  1. Ver qué es. bws show Spooler: el proceso, lo que depende de él, de qué depende y si acepta siquiera solicitudes de detención.
  2. +
  3. Probar la detención normal, como plan. bws stop Spooler --dry-run --dependents. Si la respuesta es un rechazo, dice cuál de las tres razones es.
  4. +
  5. Si no se detiene, mirar lo que cuesta terminarlo. bws kill Spooler --dry-run, y leer la lista de servicios que comparten ese proceso.
  6. +
  7. Después hacerlo, con un camino de vuelta. bws kill Spooler --restart. El informe termina con lo que no funcionó y los comandos que lo devuelven todo a su sitio.
  8. +
+

Los cuatro funcionan igual en la ventana: clic derecho en una fila, elegir Force stop..., leer el plan, y el botón de debajo lleva el nombre de lo que hará.

+
+
+ +
+
+

Por qué no usar simplemente el Administrador de tareas

+

Porque responde a otra pregunta. El Administrador de tareas conoce procesos y este problema trata de servicios, y ambos no se corresponden uno a uno.

+

Un svchost.exe compartido puede alojar una docena de servicios. El Administrador de tareas lo terminará sin decir cuáles doce, ninguno vuelve por sí solo y nada le dice después qué se detuvo. Un EDR que marca un proceso que termina svchost.exe hace su trabajo, y no puede distinguir su clic de cualquier otro.

+ +
+
diff --git a/site/pages/stop-a-service-that-will-not-stop/page.json b/site/pages/stop-a-service-that-will-not-stop/page.json index b5c878b4..a56df841 100644 --- a/site/pages/stop-a-service-that-will-not-stop/page.json +++ b/site/pages/stop-a-service-that-will-not-stop/page.json @@ -8,6 +8,7 @@ "en": "stop-a-windows-service-that-will-not-stop", "pl": "usluga-ktora-nie-chce-sie-zatrzymac", "de": "windows-dienst-laesst-sich-nicht-beenden", - "fr": "service-windows-impossible-a-arreter" + "fr": "service-windows-impossible-a-arreter", + "es": "servicio-de-windows-que-no-se-detiene" } } diff --git a/site/pages/what-should-be-running/es.html b/site/pages/what-should-be-running/es.html new file mode 100644 index 00000000..29f13788 --- /dev/null +++ b/site/pages/what-should-be-running/es.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Guía +

¿Qué servicios deberían estar en marcha?

+

La respuesta honesta es que nadie puede decírselo, y que toda lista que lo pretende describe un equipo que no es el suyo. Lo que sí puede responderse es más estrecho y mucho más útil: qué no cuadra en este equipo, y qué es distinto de cuando funcionaba.

+
+
+ +
+
+

Por qué la pregunta general no tiene respuesta

+
    +
  • El conjunto difiere según la edición, la versión y el rol de Windows. Un controlador de dominio, un portátil y un host de contenedores discrepan en casi todo, y una lista escrita para uno es errónea para los demás.
  • +
  • La mitad de lo que está instalado no es de Windows. Controladores, agentes, servicios de actualización, demonios de licencias: cada uno fue puesto ahí por algo, y ninguna lista general sabe por qué.
  • +
  • La mayoría de los servicios están pensados para estar detenidos. Un Windows moderno inicia una fracción de lo que registra: el resto espera un desencadenador (la llegada de un dispositivo, la apertura de un puerto, la unión a un dominio) y detenido es su estado correcto.
  • +
  • Las listas de "deshabilite estos para mejorar el rendimiento" son la forma en que se rompen los equipos. El servicio que parece inactivo es el que otra cosa inicia bajo demanda, y el fallo aparece una semana después en un lugar sin relación.
  • +
+
+
+ +
+
+

Las preguntas que sí tienen respuesta

+
+
+

Lo que debería estar en marcha y no lo está

+

start:auto !status:running

+

A Windows se le dijo que iniciara estos y no se están ejecutando. En un equipo sano es una lista corta: un par de entradas que se inician tarde y vuelven a detenerse. Cualquier otra cosa merece una mirada.

+
+
+

Lo que está deshabilitado y funciona igualmente

+

mismatch:running

+

Configuración y estado que no concuerdan. Normalmente alguien lo deshabilitó sin detenerlo, y el próximo reinicio será una sorpresa.

+
+
+

Lo que apunta a un archivo que ya no está

+

file:missing

+

Una desinstalación que dejó el registro tras de sí. Inofensivo hasta que algo intenta iniciarlo, y una pista sobre lo que hubo en este equipo.

+
+
+

Lo que nadie firmó

+

signed:no peruser:no

+

No es prueba de nada por sí solo, y es el lugar adecuado para empezar a leer. El segundo término descarta las familias por usuario, que de otro modo llenan la lista de casi duplicados.

+
+
+

Lo que pide los privilegios más fuertes

+

privilege:SeDebugPrivilege

+

Un privilegio que permite a un proceso abrir cualquier otro. Un puñado de servicios legítimos lo piden, y conviene saber cuáles en su equipo.

+
+
+

Lo que espera un desencadenador

+

trigger:any status:stopped

+

Detenidos porque nada los ha solicitado todavía, y no porque algo vaya mal. Saber cuáles son es lo que hace que la primera lista deje de ser alarmante.

+
+
+
+
+ +
+
+

La que supera a todas

+

Pregunte al propio equipo, cuando funcionaba.

+

Tome una instantánea el día en que el equipo entra en servicio. Entonces debería estar esto en marcha se convierte en estaba esto en marcha cuando todo funcionaba: una pregunta sobre su equipo y no sobre un equipo de un artículo.

+
bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... una semana, un parche o un incidente después
+bws snapshot diff C:\baselines\web01.json --live
+

La configuración se informa aparte del estado de ejecución, de modo que la respuesta no son cuarenta servicios que casualmente están activos, sino el tipo de inicio que alguien cambió.

+ Auditar la deriva de un equipo +
+
+ +
+
+

Antes de detener nada

+

Cada detención en esta herramienta muestra primero su plan: los pasos, lo que cae con ellos y una advertencia cuando uno de ellos es algo sin lo cual el equipo no funciona. La lista de esos es una lista inicial de siete (las dos mitades de RPC y el iniciador de DCOM, el administrador de cuentas, el aislamiento de claves, el administrador de sesiones y Plug and Play), y el Escritorio remoto no está en ella, así que en una sesión remota, lea el plan.

+ +
+
diff --git a/site/pages/what-should-be-running/page.json b/site/pages/what-should-be-running/page.json index fd08fbe6..357b088f 100644 --- a/site/pages/what-should-be-running/page.json +++ b/site/pages/what-should-be-running/page.json @@ -8,6 +8,7 @@ "en": "what-windows-services-should-be-running", "pl": "ktore-uslugi-windows-powinny-dzialac", "de": "welche-windows-dienste-laufen-sollten", - "fr": "quels-services-windows-devraient-tourner" + "fr": "quels-services-windows-devraient-tourner", + "es": "que-servicios-de-windows-deberian-estar-en-marcha" } } diff --git a/site/site.json b/site/site.json index 0565bf81..34f5af19 100644 --- a/site/site.json +++ b/site/site.json @@ -7,7 +7,7 @@ "support": "https://donislawdev.com/support/", "_languages": "The languages that are PUBLISHED, in the order the switch lists them. The first is the default and lives at the root. The others live under /{code}/. A language that is in language_registry and not here is prepared and unreachable, which is how it is written and built before it goes live.", - "languages": ["en", "de", "fr", "pl"], + "languages": ["en", "de", "es", "fr", "pl"], "_language_registry": "How each language is written, in one place. The key is the address code in lower case and the name of its files (site/i18n/{code}.json, site/pages/{id}/{code}.html). tag is what lang and hreflang carry, locale is og:locale, name is the language in its OWN alphabet and is never translated, short is what the switch shows for the language you are in. dir is written only when it is rtl. slugs is own when the language has a slug of its own for every page in each page.json, and english when its pages live at the default language's slugs - the choice for alphabets that cannot be an ASCII address without being transliterated.", "language_registry": { From de1317d19bd77e4150d453378b84264837860928 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 21 Oct 2026 10:42:43 +0200 Subject: [PATCH 4/5] Add the website in Italian Twelve pages and the language file, with slugs of their own, held against the English pages for shape, commands and tokens and stamped with the English they follow. Co-Authored-By: Claude Sonnet 5.5 --- site/i18n/it.json | 95 +++++++++ site/pages/404/it.html | 30 +++ site/pages/404/page.json | 3 +- site/pages/audit-windows-services/it.html | 64 ++++++ site/pages/audit-windows-services/page.json | 3 +- site/pages/cli-reference/it.html | 193 +++++++++++++++++ site/pages/cli-reference/page.json | 3 +- site/pages/download/it.html | 86 ++++++++ site/pages/download/page.json | 3 +- site/pages/faq/it.html | 78 +++++++ site/pages/faq/page.json | 3 +- site/pages/home/it.html | 200 ++++++++++++++++++ site/pages/home/page.json | 3 +- site/pages/query-language/it.html | 178 ++++++++++++++++ site/pages/query-language/page.json | 3 +- site/pages/sc-exe-and-powershell/it.html | 97 +++++++++ site/pages/sc-exe-and-powershell/page.json | 3 +- site/pages/services-msc-alternative/it.html | 102 +++++++++ site/pages/services-msc-alternative/page.json | 3 +- site/pages/snapshots-and-drift/it.html | 65 ++++++ site/pages/snapshots-and-drift/page.json | 3 +- .../stop-a-service-that-will-not-stop/it.html | 68 ++++++ .../page.json | 3 +- site/pages/what-should-be-running/it.html | 86 ++++++++ site/pages/what-should-be-running/page.json | 3 +- site/site.json | 2 +- 26 files changed, 1367 insertions(+), 13 deletions(-) create mode 100644 site/i18n/it.json create mode 100644 site/pages/404/it.html create mode 100644 site/pages/audit-windows-services/it.html create mode 100644 site/pages/cli-reference/it.html create mode 100644 site/pages/download/it.html create mode 100644 site/pages/faq/it.html create mode 100644 site/pages/home/it.html create mode 100644 site/pages/query-language/it.html create mode 100644 site/pages/sc-exe-and-powershell/it.html create mode 100644 site/pages/services-msc-alternative/it.html create mode 100644 site/pages/snapshots-and-drift/it.html create mode 100644 site/pages/stop-a-service-that-will-not-stop/it.html create mode 100644 site/pages/what-should-be-running/it.html diff --git a/site/i18n/it.json b/site/i18n/it.json new file mode 100644 index 00000000..f0444fdb --- /dev/null +++ b/site/i18n/it.json @@ -0,0 +1,95 @@ +{ + "_translated_from": "1867e30d6665", + "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.", + + "chrome.skip": "Vai al contenuto", + "chrome.nav": "Sito", + "chrome.language": "Lingua", + + "chrome.footer.product": "Prodotto", + "chrome.footer.guides": "Guide", + "chrome.footer.project": "Progetto", + "chrome.footer.source": "Codice sorgente su GitHub", + "chrome.footer.releases": "Versioni", + "chrome.footer.issues": "Tracker delle segnalazioni", + "chrome.footer.security": "Segnalare un problema di sicurezza", + "chrome.footer.support": "Sostenere il progetto", + + "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Pubblicato con licenza GNU General Public License, versione 3. Realizzato con un flusso di lavoro assistito dall'IA.", + "chrome.legal.trademark": "{{product}} non è affiliato a Microsoft, né approvato né sponsorizzato da Microsoft. Windows è un marchio del gruppo di società Microsoft, e il nome è usato qui solo per dire cosa gestisce lo strumento.", + "chrome.legal.privacy": "Questo sito non imposta cookie, non esegue script e non carica nulla da nessun altro luogo.", + + "table.head.code": "Codice", + "table.head.meaning": "Significato", + "table.head.switch": "Opzione", + "table.head.what": "Cosa fa", + "table.head.where": "Dove agisce", + "table.head.field": "Campo", + "table.head.asks": "Interroga su", + "table.head.values": "Valori", + + "exit.ok": "Fatto, e tutto è arrivato dove doveva andare.", + "exit.runtime": "Lo strumento è fallito - non ha potuto fare ciò che gli era stato chiesto, per una ragione che riguarda lo strumento e non il piano.", + "exit.usage": "La riga di comando era sbagliata. A un comando scritto male viene offerto quello che probabilmente voleva.", + "exit.incomplete": "Il piano era buono, è stato eseguito, e qualcosa al suo interno non è arrivato dove doveva andare - il gestore ha rifiutato, o la sessione non aveva diritti su di esso.", + "exit.interrupted": "Qualcuno ha fermato l'esecuzione a mano. Diverso da zero anche se ogni passaggio era arrivato, così uno script che lo avvolge non tratta un'esecuzione interrotta come pulita.", + "exit.differences": "Un confronto è stato eseguito e ha trovato la configurazione alla deriva - una voce aggiunta o rimossa, o una impostata diversamente. Lo stato di esecuzione da solo non è deriva. Solo con --exit-code, perché trovare la deriva è ciò per cui serve questo strumento, e trovarla non è un fallimento.", + + "switch.query": "Restringere l'elenco con il linguaggio di query.", + "switch.signatures": "Leggere chi ha firmato ogni eseguibile e se Windows si fida. Parecchi secondi su un'intera macchina, quindi è disattivato se non richiesto - e una query sulle firme lo attiva da sola.", + "switch.memory": "Leggere cosa usa il processo di ogni voce in esecuzione. Disattivato per impostazione predefinita perché è una misurazione e non un'impostazione: un secondo dopo è diversa.", + "switch.required-by": "Leggere quali voci smettono di funzionare se una viene fermata, chiesto direttamente a Windows anziché dedotto da ciò che ognuna dichiara. Una chiamata per voce, quindi disattivato se non richiesto. show e snapshot create lo leggono ogni volta.", + "switch.follow-network": "Lasciare che lo strumento esca da questa macchina, in qualsiasi modo - un percorso di avvio che vive sulla condivisione di qualcun altro, e un certificato che questa macchina non ha già. Disattivato per impostazione predefinita per sicurezza: una condivisione irraggiungibile costa ventuno secondi e si autentica come chi l'ha eseguito, e recuperare un certificato è una connessione a una terza parte nel mezzo di un normale elenco. Senza di esso una firma viene controllata contro ciò che c'è qui, e un risultato che potrebbe essere causato dal non aver guardato viene segnalato come non letto e non come un verdetto.", + "switch.force": "Su kill, terminare subito il processo senza chiedere con garbo - l'anteprima mostra allora un passaggio invece di due. Su snapshot create, sostituire uno snapshot già presente - un file che non è uno snapshot non viene mai sostituito.", + "switch.restart": "Su kill, rimettere la voce a posto una volta sparito il processo, insieme a tutto ciò che lo condivideva.", + "switch.stop": "Su start-type, e solo accanto a disabled, fermare la voce nello stesso piano una volta scritta l'impostazione. Un tipo di avvio cambia il prossimo avvio e nulla adesso, quindi senza di esso una voce in esecuzione impostata su disabilitato continua a girare.", + "switch.full": "Su show, stampare anche i campi davvero vuoti. Un campo che nessuno ha potuto leggere viene stampato comunque.", + "switch.components": "Su license, trasformare l'avviso in ogni componente di questo eseguibile con la sua versione, la sua licenza e la sua provenienza. Lo stesso insieme che porta la distinta dei materiali pubblicata accanto al download, perché entrambe sono prodotte da un unico registro.", + "switch.json": "Lo stesso documento, leggibile da una macchina, sullo standard output.", + "switch.note": "Per cosa è stato preso lo snapshot, conservato dentro il file.", + "switch.exit-code": "Terminare con il codice 5 quando la configurazione differisce - una voce aggiunta o rimossa, o una impostata diversamente. Lo stato di esecuzione da solo non conta. Disattivato per impostazione predefinita, così uno script che vuole solo le differenze stampate non inciampa nel trovarne.", + "switch.live": "Confrontare il file con questa macchina com'è adesso, anziché con un secondo file.", + "switch.timing": "Quanto è durata ogni parte della lettura, sullo standard error.", + "switch.dry-run": "Stampare il piano e non cambiare nulla. È lo stesso piano che esegue un'esecuzione - non esiste un secondo percorso di codice per l'esecuzione vera.", + "switch.dependents": "Mettere nel piano, come passaggi a sé, i servizi che smetterebbero di funzionare.", + "switch.timeout": "Quanto può durare un passaggio senza progressi prima che venga abbandonato, contato di nuovo ogni volta che il servizio segnala un progresso. Sessanta secondi a meno che si dica altro. Un servizio che continua a segnalare progressi viene osservato per tutto il tempo necessario. Scadere è la fine dell'osservazione e non un fallimento, e il rapporto dice dove è stata lasciata la voce.", + + "field.name": "il nome del servizio, quello con cui Windows lo identifica", + "field.display": "il nome visualizzato, come lo scrive questo Windows", + "field.description": "ciò che la voce dice di sé", + "field.type": "che tipo di voce è", + "field.peruser": "se è una delle famiglie per utente di cui Windows fa una copia per sessione", + "field.status": "cosa sta facendo in questo momento", + "field.start": "cosa fa il gestore con essa al prossimo avvio", + "field.account": "l'account con cui gira, come lo scrive il gestore", + "field.pid": "il processo in cui gira", + "field.trigger": "una condizione che la avvia o la ferma", + "field.path": "la riga di comando che il gestore avvia", + "field.file": "se il file che esegue è sul disco", + "field.signed": "cosa pensa Windows della firma del file, senza controllare la revoca", + "field.publisher": "chi ha firmato il file - dimostrato solo da una firma affidabile", + "field.privilege": "un privilegio che la voce chiede", + "field.dependson": "di cosa ha bisogno questa", + "field.requiredby": "cosa smette di funzionare se questa si ferma", + "field.sidtype": "il tipo di SID del servizio", + "field.sddl": "il descrittore di sicurezza, come testo", + "field.memory": "cosa usa il suo processo", + "field.mismatch": "configurazione e stato che non concordano", + + "field.open.name": "testo", + "field.open.display": "testo", + "field.open.description": "testo", + "field.open.account": "testo, ad es. localsystem", + "field.open.pid": "un numero: 1234, >1000, 100-200", + "field.open.path": "testo", + "field.open.publisher": "testo", + "field.open.privilege": "testo, ad es. SeDebugPrivilege", + "field.open.dependson": "un nome di servizio", + "field.open.requiredby": "un nome di servizio", + "field.open.sddl": "testo", + "field.open.memory": "una dimensione con unità: 500MB, >1GB, 100MB-1GB", + + "reserved.any": "c'è un valore, qualunque sia", + "reserved.none": "non c'è davvero alcun valore - la voce non ne ha", + "reserved.unreadable": "lo strumento non ha potuto leggere questo campo, o non lo ha letto, il che è una domanda che services.msc non sa nemmeno porre" +} diff --git a/site/pages/404/it.html b/site/pages/404/it.html new file mode 100644 index 00000000..eab097ec --- /dev/null +++ b/site/pages/404/it.html @@ -0,0 +1,30 @@ + + + + + +
+
+ 404 +

Questa pagina non esiste

+

L'indirizzo non corrisponde a nulla in questo sito. Non è stato cancellato nulla perché ciò accadesse - qui gli indirizzi non cambiano, perché una pagina spostata romperebbe ogni link che vi abbia mai puntato.

+ +
+
+ +
+
+

Cosa cerca di solito la gente

+
+

Download

Due eseguibili autonomi, o un programma di installazione.

+

Linguaggio di query

Ogni campo e ogni valore su cui cercare.

+

Riferimento CLI

Ogni opzione e ogni codice di uscita.

+

Snapshot e deriva

Cosa è cambiato su questa macchina da ieri.

+

Domande e limiti

Compreso ciò che lo strumento rifiuta per scelta progettuale.

+

Il codice sorgente

Tutto è su GitHub con licenza GPL-3.0.

+
+
+
diff --git a/site/pages/404/page.json b/site/pages/404/page.json index c66bcd64..7ea520ab 100644 --- a/site/pages/404/page.json +++ b/site/pages/404/page.json @@ -8,6 +8,7 @@ "pl": "404", "de": "404", "fr": "404", - "es": "404" + "es": "404", + "it": "404" } } diff --git a/site/pages/audit-windows-services/it.html b/site/pages/audit-windows-services/it.html new file mode 100644 index 00000000..aafcdaab --- /dev/null +++ b/site/pages/audit-windows-services/it.html @@ -0,0 +1,64 @@ + + + + + +
+
+ Guida +

Audit dei servizi Windows

+

Un audit non è un elenco di ciò che c'è sulla macchina. È la differenza tra ciò che c'è sulla macchina e ciò che doveva esserci - e nessun Windows di serie registra la seconda metà.

+
+
+ +
+
+

Tre domande, e cosa vi risponde

+
+
+

Cosa è cambiato da quando questa macchina è stata costruita?

+

Uno snapshot preso alla distribuzione e un confronto con la macchina stanotte. La configurazione è segnalata a parte rispetto a ciò che si è semplicemente avviato o fermato, così l'unico tipo di avvio che qualcuno ha cambiato non è sepolto sotto quaranta servizi che capita siano in esecuzione.

+

bws snapshot diff baseline.json --live

+
+
+

Perché lo staging differisce dalla produzione?

+

Prenda uno snapshot su ciascuna e confronti i due file - ovunque, senza che nessuna delle due macchine sia presente. I file portano il nome della macchina e l'account che li ha presi.

+

bws snapshot diff staging.json production.json

+
+
+

Cosa c'è qui che non dovrebbe esserci?

+

Query che trovano le forme che vale la pena guardare: un servizio il cui eseguibile è sparito, uno non firmato, uno in esecuzione benché disabilitato, uno che chiede diritti di debug.

+

file:missing, signed:no, mismatch:running

+
+
+
+
+ +
+
+

La forma notturna

+
# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - nessuna deriva di configurazione
+#   5 - la configurazione è andata alla deriva, e drift.json dice come
+#   3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+

Il codice di uscita 5 è ciò che fa di questo un audit invece di un rapporto che nessuno legge: l'attività tace finché la macchina non va alla deriva, e la notte in cui lo fa, qualcuno viene avvisato.

+

Prenda la base di riferimento da una sessione con privilegi elevati. Senza diritti di amministratore il gestore elenca meno voci e rifiuta di più tra quelle che elenca. Lo snapshot registra se l'account che lo ha preso era un amministratore, così il confronto può dirlo invece di segnalare come rimosse voci che nessuno ha rimosso - ma una base di riferimento a cui manca metà della macchina resta una base di riferimento a cui manca metà della macchina.

+
+
+ +
+
+

Quanto vale uno snapshot come prova

+
    +
  • È JSON con un campo per riga, quindi entra in un repository e git diff lo legge. Un revisore che non ha questo strumento può comunque leggere il file, e un sistema di controllo di versione risponde già al quando.
  • +
  • Contiene ciò che lo snap-in non ha mai mostrato: il percorso di avvio e gli argomenti, l'hash e il firmatario del file, le dipendenze in entrambe le direzioni, i trigger, i privilegi richiesti, il tipo di SID e il descrittore di sicurezza.
  • +
  • Dice ciò che non ha potuto leggere. Un campo su cui questa sessione non aveva diritti viene registrato come non letto - mai come vuoto - così un confronto successivo può dire not compared invece di chiamarlo in silenzio invariato.
  • +
  • È una descrizione dell'intera macchina. Lo archivi di conseguenza: viene scritto con i permessi che la sua cartella ha già, e lo strumento non restringe nulla.
  • +
+ Come funzionano gli snapshot e i confronti +
+
diff --git a/site/pages/audit-windows-services/page.json b/site/pages/audit-windows-services/page.json index 0a6a305d..a4b16d71 100644 --- a/site/pages/audit-windows-services/page.json +++ b/site/pages/audit-windows-services/page.json @@ -9,6 +9,7 @@ "pl": "audyt-uslug-windows", "de": "windows-dienste-auditieren", "fr": "auditer-les-services-windows", - "es": "auditar-servicios-de-windows" + "es": "auditar-servicios-de-windows", + "it": "audit-dei-servizi-windows" } } diff --git a/site/pages/cli-reference/it.html b/site/pages/cli-reference/it.html new file mode 100644 index 00000000..4685059e --- /dev/null +++ b/site/pages/cli-reference/it.html @@ -0,0 +1,193 @@ + + + + + + + +
+
+ Riferimento +

Riferimento della riga di comando

+

Ogni comando, ogni opzione e ogni codice di uscita di bws, versione {{version}}. bws --help è la fonte autorevole ed è più lunga - questa pagina è la stessa superficie, disposta per essere letta.

+
+
+ +
+
+

I comandi

+

Undici comandi. snapshot è un sostantivo e vuole una parola dopo di sé. Anche tool lo è, e da solo elenca gli strumenti.

+
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
+bws show NAME [--full] [--follow-network] [--json] [--timing]
+bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
+bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
+bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
+bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
+bws history [NAME] [--json] [--timing]
+bws tool
+bws tool fix
+bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
+bws license [--components]
+bws --help
+bws --version
+

A un comando scritto male viene offerto quello che probabilmente voleva, e l'esecuzione termina con il codice 2 invece di fare qualcosa di simile a ciò che ha chiesto.

+
$ bws lst
+There is no command lst. Did you mean list?
+
+
+ +
+
+

Cosa fa ogni comando

+
+
+

list e show

+

list è l'intera macchina, ristretta da --query. show è una voce con tutto ciò che se ne sa - la firma, i privilegi, il descrittore di sicurezza e la memoria, tutto letto ogni volta, perché su una sola voce costa circa sessanta millisecondi mentre sull'intera macchina costa un secondo. I campi davvero vuoti vengono omessi a meno che passi --full. Un campo che nessuno ha potuto leggere viene stampato comunque, perché ometterlo sembrerebbe una risposta.

+
+
+

stop, start e restart

+

Ciascuno costruisce un piano e lo esegue. --dry-run stampa il piano e non cambia nulla, --dependents vi inserisce come passaggi a sé i servizi che smetterebbero di funzionare, e --timeout dice quanto può durare un passaggio senza progressi. I driver vengono rifiutati anziché tentati, perché fermare un driver del kernel spesso non è reversibile senza un riavvio.

+
+
+

kill - per un servizio che non si ferma

+

Chiede al servizio di fermarsi e termina il processo che lo ospita solo se questo non funziona, così una voce che si ferma da sola non viene mai terminata. Terminare un processo porta con sé ogni altro servizio che vive in quel processo, si fosse fermato prima o no, e l'anteprima li nomina e nomina il processo con il suo numero. --force salta il passaggio cortese e l'anteprima mostra allora un passaggio invece di due. --restart rimette tutto a posto dopo.

+

Windows scrive questa idea in modo diverso. --force su Stop-Service significa "anche se qualcosa ne dipende", che è ciò che qui fa --dependents. Per questo è un comando a sé e non un'opzione di stop.

+
+
+

start-type - un'impostazione, non una mossa

+

Dice cosa farà il gestore con una voce al prossimo avvio, e senza --stop non muove nulla: una voce in esecuzione continua a girare, una ferma resta ferma, e il piano lo dice. disabled è quella su cui fermarsi, perché impedisce al gestore di avviare la voce del tutto, anche su richiesta per qualcos'altro che ne ha bisogno. delayed è automatico, avviato un poco dopo le altre voci automatiche - la parola su cui start:delayed interroga in una query - e Windows lo rifiuta per una voce in un gruppo di ordine di caricamento, cosa che il piano dice prima che accada qualsiasi cosa. Ciascuno dei quattro scrive se la voce parte in ritardo, come fa sc.exe. --stop, solo accanto a disabled, ferma la voce nello stesso piano una volta scritta l'impostazione.

+
+
+

snapshot create e snapshot diff

+

create legge sempre firme e hash, perché uno snapshot viene conservato e confrontato dopo, e uno senza di essi confrontato con uno che li ha sarebbe trattato come se la macchina fosse cambiata. diff dice cosa è cambiato passando dal primo file al secondo, o da un file a questa macchina con --live. La pagina degli snapshot ha il formato e il ragionamento.

+
+
+

history - chi l'ha cambiato, dal registro di sistema

+

Modifiche del tipo di avvio e installazioni dal registro di sistema, le più recenti per prime, con l'account che Windows ha registrato. La prima riga dice fin dove arriva il registro e se è stato cancellato, perché una cronologia è lunga quanto il registro. Con un nome sono le modifiche del tipo di avvio di quel servizio - le installazioni sono elencate solo senza nome, perché Windows registra un'installazione sotto il nome visualizzato e mai sotto il nome del servizio. Un account è nominato dove questa macchina sa nominarlo da sola e mostrato come SID altrimenti, e i tipi di avvio arrivano con le parole che Windows ha scritto.

+
+
+

tool - risposte pronte a problemi comuni

+

Gli stessi strumenti che la finestra mostra nella sua scheda Tools. bws tool li elenca e bws tool fix elenca le correzioni rapide: printer, sound, indexing e search, ciascuna il riavvio di un servizio Windows insieme a ciò che ne dipende, scelte perché le stesse pagine di risoluzione dei problemi di Microsoft lo suggeriscono. bws tool fix printer è esattamente bws restart Spooler --dependents - lo stesso piano, lo stesso output e gli stessi codici di uscita - e come ogni comando qui che cambia qualcosa non chiede prima, quindi --dry-run è il modo di guardare prima che venga eseguito.

+
+
+

license - cosa c'è dentro il file scaricato

+

Non legge nulla - né gestore dei servizi, né disco, né rete - e risponde da un registro compilato nell'eseguibile. --components trasforma l'avviso in ogni componente con la sua versione, la sua licenza e la sua provenienza. Lo stesso insieme che porta la distinta dei materiali pubblicata accanto al download, perché entrambe sono prodotte da un unico registro, e il motivo per cui ne vale la pena: il programma è un file autonomo, quindi accanto non c'è nulla che uno scanner possa leggere.

+
+
+
+
+ +
+
+

Esempi

+

I piani qui sotto sono stati verificati con --dry-run sul programma che questa pagina descrive. Un comando che cambia qualcosa non chiede prima, quindi --dry-run è il modo di guardare prima che venga eseguito. Spooler sta per qualsiasi servizio - metta al suo posto il nome del suo.

+
+

Trovare e leggere

+
bws list                                       ogni servizio e driver di questa macchina
+bws list --query "start:auto !status:running"  ciò che dovrebbe essere attivo e non lo è
+bws list --query "status:running" --memory     cosa usa il processo di ogni voce in esecuzione
+bws show Spooler                               tutto ciò che si sa di una voce
+bws show Spooler --full                        anche i campi davvero vuoti
+

Guardare prima, cambiare dopo

+
bws restart Spooler --dry-run                il piano, e nient'altro
+bws restart Spooler --dependents             riavviarlo insieme a ciò che ne dipende
+bws stop Spooler --dependents --timeout 120  consentire due minuti per passaggio senza progressi
+bws start-type WSearch delayed --dry-run     avviarlo un poco dopo le altre voci automatiche
+bws start-type Spooler disabled --stop       disabilitarlo e fermarlo in un unico piano
+

Un servizio che non si ferma

+
bws kill Spooler --dry-run          il processo, e ogni servizio che vive al suo interno
+bws kill Spooler --restart          terminare il processo solo se un arresto fallisce, poi rimettere tutto a posto
+bws kill Spooler --force --dry-run  un passaggio invece di due: il processo terminato subito
+

Snapshot e deriva

+
bws snapshot create before.json --note "before the patch"  congelare la macchina, con una nota conservata dentro
+bws snapshot diff before.json after.json                   due file - due giorni, o due macchine
+bws snapshot diff before.json --live                       il file contro questa macchina com'è adesso
+bws snapshot diff before.json --live --exit-code           lo stesso, terminando con 5 se la configurazione è andata alla deriva
+

Chi l'ha cambiato

+
bws history          ogni modifica del tipo di avvio e installazione che il registro di sistema contiene
+bws history Spooler  le modifiche del tipo di avvio di un servizio
+bws history --json   lo stesso come documento, con registro e modifiche
+

Correzioni rapide

+
bws tool                      gli strumenti che ci sono
+bws tool fix                  le correzioni rapide, e il servizio dietro ciascuna
+bws tool fix sound --dry-run  il piano per riavviare i due servizi audio
+bws tool fix printer          riavviare lo Spooler di stampa con ciò che ne dipende
+

Cosa c'è dentro il file

+
bws license --components  ogni componente, la sua versione, la sua licenza e la sua provenienza
+bws --version             la versione di questo eseguibile
+

In uno script PowerShell

+
# le voci che dovrebbero essere attive e non lo sono, come oggetti
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# i file non firmati, in un foglio di calcolo
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# di cosa ha bisogno un servizio
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# un controllo notturno che si ramifica sul codice di uscita
+bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
+switch ($LASTEXITCODE) {
+  0 { 'no configuration drift' }
+  5 { 'the configuration drifted' }
+  default { "no clean answer, exit code $LASTEXITCODE" }
+}
+

In cmd e in un file batch

+
rem un secondo comando solo quando il primo non è terminato in modo pulito
+bws restart Spooler || echo the restart did not end cleanly
+
+rem in un file batch con l'espansione ritardata attiva, il ! ha bisogno di un accento circonflesso
+bws list --query "start:auto ^!status:running"
+
+
+
+ +
+
+

Opzioni

+

{{switch_count}} in tutto. La terza colonna indica i comandi a cui appartiene ciascuna - un'opzione passata a un comando che non sa che farsene è un errore con quell'elenco dentro, anziché un flag ignorato in silenzio.

+ {{table:switches}} +
+
+ +
+
+

Codici di uscita

+

{{exit_code_count}} conclusioni, e ognuna è una cosa diversa che uno script deve fare. I dati vanno sullo standard output e tutto il resto sullo standard error, così bws list --json | jq funziona e un avviso non finisce mai nel suo JSON.

+

Ogni documento JSON è ASCII puro: una lettera fuori da esso viene scritta come una sequenza di escape di sei caratteri che ogni lettore JSON riconverte nella lettera, così bws list --json > file.json è UTF-8 valido e | ConvertFrom-Json lo legge correttamente qualunque sia la tabella codici della console. Nel testo che una persona legge, un carattere che sposterebbe il terminale invece di stamparsi - una tabulazione, un'interruzione di riga, una sequenza di escape, una sovrascrittura di direzione - viene mostrato come il suo punto di codice, <U+001B>.

+

-- termina le opzioni, così un servizio il cui nome inizia con un trattino può comunque essere nominato: bws show -- -odd. Le righe di comando che lo strumento Le consegna sono scritte per PowerShell: un nome con uno spazio va tra virgolette doppie, che cmd legge allo stesso modo, e un nome che PowerShell espanderebbe al loro interno, come MSSQL$SQLEXPRESS, va tra virgolette singole.

+ {{table:exit-codes}} +

Ctrl+C ha tre livelli, e ciascuno dice quanto costa il successivo. Il primo smette di andare avanti e rimette comunque a posto ciò che era stato preso, il secondo lascia le cose come stanno e stampa comunque il rapporto, il terzo termina il processo. Un'esecuzione fermata a mano termina con 4 anche se ogni passaggio era arrivato.

+

Chiudere la finestra della console conta come il primo Ctrl+C. Windows dà cinque secondi a un programma dopo di che, e in quelli questo smette di andare avanti e rimette a posto ciò che aveva fermato. Disconnettersi e spegnere lo terminano senza alcun avviso a cui potrebbe reagire, e una sessione remota caduta può fare lo stesso.

+
+
+ +
+
+

In un'attività pianificata

+

La forma per cui questo strumento è stato costruito: congelare la macchina quando è nota come buona, poi chiedere ogni notte se lo è ancora.

+
# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - nessuna deriva di configurazione
+#   5 - la configurazione è andata alla deriva, e drift.json dice come
+#   3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+

La finestra è l'altra metà dello stesso motore: {{archive_window}} la contiene, e la pagina di download dice cos'è ciascun archivio.

+
+
+ +
+
+

L'argomento della finestra

+

BetterWindowsServices.exe accetta un argomento pensato per una persona: --catalogue apre un foglio per sviluppatori che mostra ogni componente della finestra in ogni stato e non legge nulla dalla sua macchina. Un secondo, --carry, è il modo in cui una finestra passa ciò che mostrava alla copia di sé che riavvia come amministratore. Nessuno lo digita, e tutto ciò che contiene che quella finestra non avrebbe potuto scrivere viene rifiutato.

+
+
diff --git a/site/pages/cli-reference/page.json b/site/pages/cli-reference/page.json index 8d1f7e01..a1ee911d 100644 --- a/site/pages/cli-reference/page.json +++ b/site/pages/cli-reference/page.json @@ -9,6 +9,7 @@ "pl": "dokumentacja-cli", "de": "cli-referenz", "fr": "reference-cli", - "es": "referencia-cli" + "es": "referencia-cli", + "it": "riferimento-cli" } } diff --git a/site/pages/download/it.html b/site/pages/download/it.html new file mode 100644 index 00000000..e9770fbb --- /dev/null +++ b/site/pages/download/it.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Download +

Decomprimere e avviare, oppure installare

+

Versione {{version}}. Gli archivi non richiedono un programma di installazione e non scrivono nulla nel Registro, e consultare non richiede diritti di amministratore. Un programma di installazione firmato mette invece entrambi i programmi su tutta la macchina. Libero e gratuito con licenza GPL-3.0.

+ +
+
+ +
+
+

Cosa contiene la versione

+
+ + + + + + + +
FileChe cos'è
{{archive_window}}La finestra: BetterWindowsServices.exe, un eseguibile autonomo con il proprio runtime .NET all'interno
{{archive_cli}}La riga di comando: bws.exe, un eseguibile autonomo, per script, attività pianificate e CI
{{archive_installer}}Il programma di installazione: entrambi i programmi in Program Files per ogni account della macchina, la finestra nel menu Start e bws nel PATH della macchina
+
+

Ne prenda uno o entrambi - sono due client dello stesso motore e nessuno dei due ha bisogno dell'altro. Su un server, la riga di comando è la più piccola delle due e fa tutto ciò che fa la finestra.

+

Il programma di installazione contiene esattamente ciò che contengono i due archivi. Si installa in modo silenzioso con msiexec /i {{archive_installer}} /qn, una versione più recente si installa sopra una più vecchia e non chiude nulla di ciò che è in esecuzione - chiuda quindi la finestra e qualsiasi bws in esecuzione prima di aggiornare, perché una copia lasciata attiva può fermarsi con un errore. La disinstallazione da Impostazioni, App rimuove i programmi, la voce del menu Start e la voce del PATH, e lascia stare i suoi file.

+

Gli eseguibili portano una firma Authenticode, così Windows nomina l'editore invece di avvertire di uno sconosciuto.

+
+
+ +
+
+

Requisiti

+
    +
  • Windows 10 versione 1809 o successiva, oppure Windows Server 2019 o successivo. Solo 64 bit - un processo a 32 bit legge percorsi e chiavi di Registro reindirizzati, il che darebbe risposte sbagliate senza avvisare.
  • +
  • Nessun .NET da installare. Entrambi gli eseguibili portano il proprio runtime .NET.
  • +
  • Diritti di amministratore per cambiare qualsiasi cosa. Leggere, cercare, gli snapshot e i confronti funzionano senza, con meno voci visibili e lo strumento che lo dice in alto invece di far finta che l'elenco sia l'intera macchina.
  • +
+

La finestra tiene un file suo - la disposizione in cui ha lasciato l'elenco - in %APPDATA%\BetterWindowsServices. Uno snapshot va dove dice a bws snapshot create di metterlo, e nella cartella corrente quando non lo dice.

+

Il programma parla inglese. La finestra legge un file di lingua, languages\gui.<codice>.json, posto accanto a essa e scelto in base alla lingua di Windows, senza alcuna opzione. Una traduzione è quindi un contributo che si può aggiungere senza ricompilare - CONTRIBUTING.md spiega come.

+
+
+ +
+
+

Antivirus ed EDR

+

Questo strumento fa ciò che fa un amministratore con i servizi, e parte di questo è ciò che il software di sicurezza tiene d'occhio.

+

Ferma e avvia servizi, può terminare il processo dietro uno di essi e legge il descrittore di sicurezza e i privilegi richiesti di ogni servizio. Un EDR che segnala un processo che termina svchost.exe fa il suo lavoro, e un arresto forzato qui può assomigliare esattamente a quello.

+

Ciò che non fa, così che possa verificare l'affermazione: non inietta nulla in alcun processo, non comprime né offusca nulla, non installa alcun servizio né driver e non lascia nulla in esecuzione, e non apre alcuna connessione di rete. È open source con licenza GPL-3.0 e può compilare da sé entrambi gli eseguibili.

+

Se la sua policy richiede un'esclusione, escluda i due eseguibili per file anziché una cartella. L'unica cosa da trattare con la stessa cura dello strumento stesso è un file di snapshot: descrive l'intera macchina.

+
+
+ +
+
+

Compilare dai sorgenti

+

SDK .NET 10, su Windows.

+
git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+

Alcuni test leggono il vero gestore di controllo dei servizi della macchina su cui girano e confrontano ciò che dice questo strumento con ciò che dice sc.exe. Sono di sola lettura. Gli eseguibili a file singolo che le versioni portano sono queste due pubblicazioni, ciascuna un file con il runtime all'interno:

+
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+

Finiscono come bws.exe e BetterWindowsServices.exe sotto bin/Release/.../win-x64/publish/ di ciascun progetto. I file .pdb accanto sono simboli di debug, e nulla ne ha bisogno per girare.

+
+
+ +
+
+

Quanto costa farlo girare

+

Misurato su una macchina con 810 servizi. I suoi numeri saranno diversi - il numero di servizi, il disco e il processore li spostano tutti.

+
+

Circa un quarto di secondo

perché bws list legga l'intera macchina.

+

Circa otto decimi di secondo

dall'avvio della finestra all'elenco sullo schermo.

+

Circa 100 MB

per la finestra - metà dei quali è il framework dell'interfaccia utente di Windows, prima che giri qualsiasi codice proprio di questo strumento.

+

Circa 16 MB

per la riga di comando sulla stessa macchina.

+
+
+
diff --git a/site/pages/download/page.json b/site/pages/download/page.json index b273bdda..ebf786fe 100644 --- a/site/pages/download/page.json +++ b/site/pages/download/page.json @@ -9,6 +9,7 @@ "pl": "pobieranie", "de": "download", "fr": "telechargement", - "es": "descarga" + "es": "descarga", + "it": "download" } } diff --git a/site/pages/faq/it.html b/site/pages/faq/it.html new file mode 100644 index 00000000..078306da --- /dev/null +++ b/site/pages/faq/it.html @@ -0,0 +1,78 @@ + + + + + +
+
+ Domande +

Domande e limiti

+

Uno strumento che non copre qualcosa in silenzio è peggio di uno che dice cosa non sa fare. Anche i limiti sono in questa pagina, in due gruppi: ciò che rifiuta per scelta progettuale e ciò che fa Windows e che questo strumento riporta così com'è.

+
+
+ +
+
+
+
+

In cosa si differenzia da sc.exe, Get-Service o services.msc?

+

sc query e Get-Service dicono cosa è in esecuzione. services.msc permette di cambiarlo, una riga alla volta, senza modo di porre una domanda e senza traccia dopo. Questo strumento pone la domanda (start:auto !status:running), mostra il piano prima di agire e conserva uno snapshot che può confrontare una settimana dopo. Dove non concorda con sc.exe su un servizio, è un bug - parte della suite di test esegue entrambi e li confronta voce per voce. Il confronto più lungo è qui.

+
+
+

Ha bisogno di Internet?

+

Mai. Nessuna telemetria, nessun controllo degli aggiornamenti, nessuna segnalazione di arresti anomali, nessun account, nessun client di niente. L'unica volta che può toccare una rete è quando passa --follow-network: allora può guardare un percorso di avvio sulla condivisione di un'altra macchina e lasciare che Windows recuperi un certificato che questa macchina non ha già - disattivato per impostazione predefinita, e la guida dice perché. I pulsanti GitHub e Donate nella finestra e la pagina nel suo menu Help consegnano ciascuno un indirizzo fisso al browser quando li preme, ed è il browser a collegarsi.

+
+
+

Ha bisogno di diritti di amministratore?

+

Per guardare, no. Per cambiare, sì. Senza di essi il gestore mostra meno voci e rifiuta di più, ed entrambe le metà lo dicono in alto invece di far finta che l'elenco sia l'intera macchina. La finestra offre Restart as admin. Non si eleva mai da sola.

+
+
+

È gratuito? Posso usarlo al lavoro?

+

Sì a entrambi. GPL-3.0, senza condizioni nascoste. Uno snapshot che prende è il suo file.

+
+
+

Rovinerà il mio server?

+

Non da solo. Nulla viene cambiato senza un piano che ha visto, i driver vengono rifiutati e un piano che farebbe cadere qualcosa di cui la macchina ha bisogno lo dice. Ciò da cui non può proteggerla è l'esecuzione di un piano che non ha letto. L'elenco dei servizi di cui la macchina ha bisogno è un elenco iniziale di sette - le due metà di RPC e l'avviatore DCOM, il gestore degli account, l'isolamento delle chiavi, il gestore delle sessioni e Plug and Play - e Desktop remoto non c'è, quindi in una sessione remota, legga il piano.

+
+
+

È un prodotto Microsoft?

+

No. {{product}} è un progetto open source indipendente e non è affiliato a Microsoft, né approvato né sponsorizzato da Microsoft. Windows è un marchio del gruppo di società Microsoft.

+
+
+

Il programma esiste nella mia lingua?

+

No - il programma parla inglese, ed è per questo che questo sito è tradotto. La finestra legge un file di lingua, languages\gui.<codice>.json, posto accanto all'eseguibile e lo sceglie in base alla lingua di Windows, senza alcuna opzione, così una traduzione è un contributo che si può aggiungere senza ricompilare il programma. I nomi dei servizi nell'elenco sono ciò che dice il suo Windows - nella lingua in cui il suo Windows è configurato.

+
+
+

Perché la finestra è scura quando il mio Windows è chiaro?

+

È scura e resta scura qualunque sia l'impostazione di Windows, compreso un tema ad alto contrasto. È verificato e non presunto - mantiene i propri colori e resta leggibile, e non segue quell'impostazione.

+
+
+
+
+ +
+
+

Per scelta progettuale

+
    +
  • Solo la macchina locale. La gestione remota non è in questa versione. Per confrontare due macchine, prenda uno snapshot su ciascuna e confronti i due file.
  • +
  • Solo Windows, solo 64 bit, Windows 10 1809 o Windows Server 2019 e successivi.
  • +
  • Le operazioni sui driver sono rifiutate anziché tentate, perché fermare un driver del kernel spesso non è reversibile senza un riavvio.
  • +
  • Lo strumento non eleva i propri privilegi. Quando il gestore rifiuta, lo dice e termina con il codice di uscita 3. La finestra offre di riavviarsi come amministratore e non fa altro al riguardo.
  • +
  • La revoca dei certificati non viene controllata. Servirebbe raggiungere la rete, e questo strumento non lo fa mai. Quindi Trusted significa che la catena era valida su questa macchina, non che nessuno abbia revocato il certificato da allora.
  • +
  • La finestra decomprime parte del framework dell'interfaccia utente di Windows prima di avviarsi. Come file singolo porta alcune librerie native che Windows può caricare solo dal disco. Senza diritti di amministratore le scrive, al primo avvio di ogni versione, in una cartella .net sotto la cartella temporanea dell'account e le carica da lì. Con diritti di amministratore usa invece ProgramData\BetterWindowsServices sull'unità di Windows - una cartella che crea in modo che solo gli amministratori possano modificarla, e che controlla a ogni avvio. Se quella cartella non può essere creata, o se altri possono modificarla, la finestra non si avvia e dice quale cartella e cosa fare. Spostarsi lì significa che una finestra con privilegi elevati si avvia una seconda volta, il che richiede una frazione di secondo, e ogni versione vi lascia le proprie librerie (circa 8 MB) finché qualcuno non elimina la cartella. La riga di comando non porta tali librerie e non decomprime nulla.
  • +
  • Una sessione con privilegi elevati nomina le impostazioni .NET che eredita anziché rifiutarle. Un profiler, un interruttore di traccia o di dump, o una porta di diagnostica impostata nell'ambiente non può essere disattivato dall'interno di un programma .NET, quindi con diritti di amministratore entrambe le metà elencano quelli che trovano. Gli startup hook sono disattivati del tutto.
  • +
+
+
+ +
+
+

Cose che fa Windows e che questo strumento riporta così come sono

+
    +
  • Un servizio ospitato dentro svchost ha un percorso di avvio che nomina l'host, così il file è presente e chi l'ha firmato dicono entrambi meno che per un servizio con un processo proprio.
  • +
  • Un file con sia una propria firma sia una voce nel catalogo di Windows può nominare due firmatari diversi. L'editore mostrato è quello dentro il file - quello che resta lo stesso guardando il file su un'altra macchina - e può differire da ciò che riporta PowerShell.
  • +
  • Senza diritti di amministratore il gestore elenca meno voci e rifiuta di più tra quelle che elenca. Entrambe le metà lo dicono in alto, e uno snapshot lo registra, perché confrontare uno snapshot con privilegi elevati con uno preso senza diritti segnalerebbe altrimenti come rimosse voci che nessuno ha rimosso.
  • +
+

Ha trovato un problema, o un servizio che questo strumento riporta in modo diverso da sc.exe? Il tracker delle segnalazioni è aperto, e una differenza tra i due è la cosa più utile da incollarvi.

+
+
diff --git a/site/pages/faq/page.json b/site/pages/faq/page.json index 9d6b2f84..73ce1382 100644 --- a/site/pages/faq/page.json +++ b/site/pages/faq/page.json @@ -10,6 +10,7 @@ "pl": "faq", "de": "faq", "fr": "faq", - "es": "preguntas-frecuentes" + "es": "preguntas-frecuentes", + "it": "domande-frequenti" } } diff --git a/site/pages/home/it.html b/site/pages/home/it.html new file mode 100644 index 00000000..54935c89 --- /dev/null +++ b/site/pages/home/it.html @@ -0,0 +1,200 @@ + + + + + + + +
+
+
+

Cerchi i suoi servizi Windows, veda ogni modifica prima che venga eseguita e scopra cosa è andato alla deriva da ieri

+

{{product}} è services.msc ricostruito per chi amministra macchine Windows - una finestra e una riga di comando su un unico motore. Faccia una domanda alla macchina invece di scorrere ottocento righe. Veda cosa farà una modifica prima di premere qualsiasi cosa. E ciò che services.msc non ha mai avuto: congelare ogni servizio in un file e, una settimana dopo, chiedere cosa è cambiato.

+ +
    +
  • Libero e gratuito, GPL-3.0
  • +
  • Un solo file, oppure un programma di installazione
  • +
  • Nessun diritto di amministratore per consultare
  • +
  • Non si collega mai a Internet
  • +
+
+
+ La finestra con cinque voci selezionate e il piano per avviarle mostrato sopra l'elenco: cinque passaggi, una nota che due di esse sono già in quello stato, una riga bws start per ogni voce e il pulsante Start 5 entries. +
Voci selezionate, un piano mostrato prima che accada qualsiasi cosa e la riga bws che chiede esattamente la stessa cosa. Il programma parla inglese - la finestra legge un file di lingua posto accanto a essa, quindi una traduzione è possibile senza ricompilare.
+
+
+
+ + +
+
+ Mezzo minuto con lo strumento +

Come appare in uso

+

Una sessione reale, su un Windows installato in polacco - i nomi visualizzati vengono da Windows, quindi sono nella sua lingua. La finestra stessa parla inglese.

+
+ Quattro voci selezionate e il piano per avviarle, un riavvio forzato del Local Session Manager il cui piano avverte che la macchina non funziona senza di esso e chiede il suo nome prima che il pulsante agisca, le domande di partenza sotto la casella di ricerca vuota e il Print Spooler trovato digitando parte del suo nome e avviato. +
Quattro voci selezionate e il piano per avviarle, un riavvio forzato che chiede il nome di un servizio di cui la macchina ha bisogno, le domande sotto una casella di ricerca vuota e il Print Spooler trovato digitando e avviato.
+
+
+
+ La schermata iniziale: tre schede di numeri su questa macchina - servizi in esecuzione, servizi ad avvio automatico che non sono partiti e servizi ad avvio automatico il cui file è sparito - e un pulsante Show the list. +
Si apre con alcuni numeri su questa macchina. Ognuno è una domanda - lo clicchi e la domanda va nella casella di ricerca.
+
+
+ L'elenco dei servizi con le tre liste sopra la casella di ricerca, una casella di ricerca vuota, i pulsanti di filtro aperti in righe per stato, tipo di avvio, firma, disaccordi e trigger, e l'elenco sotto. +
I pulsanti di filtro scrivono nella casella di ricerca, così ciò su cui ha cliccato è una query che può leggere e modificare.
+
+
+
+
+ +
+
+ Perché esiste +

services.msc è cambiato appena dai tempi di Windows 2000

+

Gli amministratori vi passano ore ogni settimana scontrandosi con gli stessi muri.

+
+
    +
  • Nessuna ricerca. L'unica navigazione è saltare alla prima lettera di un nome visualizzato.
  • +
  • Nessun filtro. Non c'è modo di chiedere mostrami ciò che è impostato per avviarsi automaticamente e non è in esecuzione.
  • +
  • Una riga alla volta. Riavviare dodici servizi significa dodici clic destri e dodici attese.
  • +
  • "Arresto in corso..." per sempre, senza altra via d'uscita che Gestione attività e indovinare il processo.
  • +
  • Nessuna cronologia. Nessuno sa chi ha impostato quel tipo di avvio su Disabilitato, né quando.
  • +
  • Dati nascosti. Il processo, i trigger, i privilegi, il descrittore di sicurezza, chi ha firmato l'eseguibile - tutto richiede sc.exe a memoria, oppure il Registro.
  • +
  • Nessuna parità nella riga di comando. sc.exe ha una sintassi degli anni Novanta, e il Get-Service fornito con Windows, in Windows PowerShell 5.1, non mostra l'account con cui gira un servizio, tanto meno la sua descrizione. PowerShell 7 mostra entrambi e si installa a parte.
  • +
+
+

Gli altri strumenti ne risolvono ciascuno una parte

+

Process Hacker e System Informer mostrano un elenco ricco e possono terminare un processo con la forza, ma non hanno né audit né riga di comando. sc.exe e PsService possono fare tutto e non dicono nulla. I cmdlet *-Service di PowerShell sono automatizzabili e superficiali.

+

Nessuno combina un elenco in cui cercare, un'anteprima prima di ogni modifica e una traccia di ciò che è cambiato nel tempo - e la traccia è il motivo per tenere questo strumento su una macchina dopo il primo pomeriggio.

+ Il confronto completo +
+
+
+
+ +
+
+ Cosa fa +

Una finestra e una riga di comando su un unico motore

+
+

Chiedere, invece di scorrere

start:auto !status:running significa ciò che dovrebbe essere attivo e non lo è. Un solo linguaggio, nella casella di ricerca e in bws list --query, con i campi suggeriti mentre digita.

+

Mostrare il piano prima che accada qualcosa

Ogni arresto, avvio, riavvio e modifica del tipo di avvio viene anticipato con i servizi che trascina con sé, e l'anteprima è ciò che viene eseguito.

+

Dirle cosa è andato alla deriva e chi l'ha cambiato

bws snapshot create congela la macchina in un file e bws snapshot diff dice cosa è cambiato da allora, la configurazione a parte rispetto a ciò che si è semplicemente avviato o fermato. bws history dice, dal registro di sistema, chi ha cambiato un tipo di avvio e chi ha installato un servizio. La finestra fa tutte e tre le cose in Audit....

+

Risolvere un problema comune con un clic

La scheda Tools e bws tool fix riavviano il servizio dietro una stampante che non stampa, un audio sparito o una ricerca bloccata, insieme a ciò che ne dipende, con lo stesso piano di tutto il resto.

+

Fermare un servizio che non si ferma

Chiede prima con garbo e termina il processo solo se questo fallisce, nominando ogni altro servizio che vive al suo interno.

+

Mostrare ciò che services.msc nasconde

Chi ha firmato l'eseguibile e se Windows si fida, trigger, privilegi, il descrittore di sicurezza, il processo e la sua memoria. Come colonne e come criteri di ricerca.

+

Dire quando non ha potuto leggere qualcosa

Un campo che non ha potuto leggere viene segnalato come non letto, mai mostrato come vuoto. Uno snapshot preso senza diritti di amministratore lo dice dentro il file stesso.

+

Adattarsi agli script

--json su ogni comando, un codice di uscita per ogni conclusione e 5 quando un confronto trova deriva.

+

Girare da un solo file, offline

Decomprima e avvii, oppure lo installi per tutta la macchina. Nessun .NET da installare, e non si collega mai a Internet. Consultare non richiede diritti di amministratore. GPL-3.0.

+
+
+
+ +
+
+ Ciò che services.msc non ha mai fatto +

Cosa è cambiato da ieri

+

Uno snapshot è l'intera macchina in un istante - ogni servizio e ogni driver, con il suo tipo di avvio, account, percorso di avvio, l'hash e il firmatario del suo file, le dipendenze, i trigger, i privilegi e il descrittore di sicurezza. È JSON con un campo per riga, quindi entra in un repository e git diff lo legge.

+
+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
    +
  • Configurazione e stato di esecuzione sono segnalati separatamente. Due snapshot presi a un giorno di distanza differiscono per ciò che capita di essere in esecuzione, e quasi nulla di questo è deriva - il tipo di avvio che è cambiato è la riga da leggere.
  • +
  • Ciò che non si è potuto confrontare è elencato, non nascosto. Un campo che uno snapshot non ha mai letto esce come not compared, così un confronto che dice nulla è cambiato significa che nulla è cambiato in ciò che entrambi i lati potevano vedere.
  • +
  • --exit-code termina con 5 quando la configurazione differisce, così un'attività pianificata può prendere uno snapshot alla distribuzione e avvisare qualcuno la prima notte in cui la macchina va alla deriva.
  • +
  • Due macchine, due file. Prenda uno snapshot in staging e uno in produzione e li confronti ovunque.
  • +
+
+ Come funzionano gli snapshot e la deriva +
+
+ +
+
+ Niente accade senza un piano +

L'anteprima è l'esecuzione

+

Ogni operazione che scrive costruisce prima un piano, e quello stesso piano è l'anteprima, la cascata dei servizi dipendenti, il rifiuto prima che prema qualsiasi cosa, la riga di comando che chiede la stessa cosa e la via del ritorno dopo.

+
+
$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt  (2 steps)
+  1. stop  vmms      (would break otherwise)
+  2. stop  Winmgmt   (asked for)
+
+Warnings:
+  - Stopping Winmgmt also stops one other entry: vmms
+  - Winmgmt starts automatically, so it will be back after the next restart.
+
    +
  • Lo esegua senza --dry-run e questi sono i passaggi, in quell'ordine, con le stesse ragioni accanto. Non esiste un secondo percorso di codice per l'esecuzione vera.
  • +
  • Ciò che cade con esso è nel piano. I servizi che smetterebbero di funzionare sono passaggi a sé, e un piano che farebbe cadere qualcosa di cui la macchina ha bisogno lo dice nei suoi avvisi.
  • +
  • Un rifiuto viene prima del pulsante. Un driver, un servizio per il quale il gestore non accetta un arresto, un processo che il sistema protegge - rifiutati quando il piano viene costruito, con la ragione. La finestra disattiva il pulsante e dice il perché accanto.
  • +
  • L'arresto forzato è in due passaggi, e il secondo è condizionale. bws kill chiede al servizio di fermarsi e termina il suo processo solo se questo non funziona, nominando ogni altro servizio che vive al suo interno.
  • +
+
+ Quando un servizio non si ferma +
+
+ +
+
+ Due minuti con lo strumento +

Dalla riga di comando

+

Lo stesso motore della finestra, per script, attività pianificate e CI. I dati vanno sullo standard output e tutto il resto sullo standard error, così bws list --json | jq funziona e un avviso non finisce mai nel suo JSON.

+
bws list --query "start:auto !status:running"     ciò che dovrebbe essere attivo e non lo è
+bws list --query "file:missing"                   servizi il cui eseguibile è sparito
+bws list --query "signed:no peruser:no"           non firmati, senza le copie per sessione
+bws show Spooler                                  tutto ciò che si sa di una voce
+bws stop Winmgmt --dry-run --dependents           cosa trascinerebbe con sé fermarlo
+bws kill Spooler --dry-run                        cosa porterebbe via terminare il suo processo
+bws start-type Spooler manual --dry-run           cosa farebbe toglierlo dall'avvio automatico
+bws snapshot create before.json                   congelare la macchina prima di una modifica
+bws snapshot diff before.json --live --exit-code  cosa è cambiato da allora, 5 se la configurazione è cambiata
+bws history Spooler                               chi ha cambiato il suo tipo di avvio, e quando
+bws tool fix printer --dry-run                    cosa farebbe la correzione rapida per una stampante bloccata
+ Ogni comando, opzione e codice di uscita +
+
+ +
+
+ Come ottenerlo +

Decomprimere e avviare, oppure installare

+

Windows 10 1809 o Windows Server 2019 e successivi, a 64 bit. Gli archivi non richiedono un programma di installazione e non scrivono nulla nel Registro, e consultare non richiede diritti di amministratore. Cambiare qualsiasi cosa richiede una sessione con privilegi elevati, e entrambe le metà lo dicono invece di fallire in silenzio - la finestra offre Restart as admin.

+
+ + + + + + + +
FileChe cos'è
{{archive_window}}La finestra, un eseguibile autonomo - nessun .NET da installare
{{archive_cli}}La riga di comando, un eseguibile autonomo, per script e CI
{{archive_installer}}Il programma di installazione: entrambi i programmi per ogni account della macchina, la finestra nel menu Start e bws nel PATH
+
+

Gli eseguibili portano una firma Authenticode, così Windows nomina l'editore invece di avvertire di uno sconosciuto.

+ +
+
diff --git a/site/pages/home/page.json b/site/pages/home/page.json index 9c6a59ac..f640eeb2 100644 --- a/site/pages/home/page.json +++ b/site/pages/home/page.json @@ -9,6 +9,7 @@ "pl": "", "de": "", "fr": "", - "es": "" + "es": "", + "it": "" } } diff --git a/site/pages/query-language/it.html b/site/pages/query-language/it.html new file mode 100644 index 00000000..0d21368a --- /dev/null +++ b/site/pages/query-language/it.html @@ -0,0 +1,178 @@ + + + + + + + +
+
+ Il linguaggio di query +

Faccia una domanda alla macchina

+

Un solo linguaggio, nella casella di ricerca della finestra e in bws list --query. Una parola sola cerca nel nome, nel nome visualizzato, nell'account e nel percorso di avvio. Un campo restringe la ricerca. {{field_count}} campi, e lo stesso testo significa la stessa cosa in entrambe le metà dello strumento.

+
+
+ +
+
+

Sei che rispondono a una domanda reale

+
+

Ciò che dovrebbe essere attivo e non lo è

start:auto !status:running

La prima query che scrive la maggior parte delle persone, e quella a cui services.msc non può rispondere affatto.

+

Servizi il cui file è sparito

file:missing

Una voce che punta a un eseguibile non presente sul disco. Di solito una disinstallazione che ha lasciato dietro di sé la registrazione.

+

Non firmati, senza il rumore delle sessioni

signed:no peruser:no

Le famiglie per utente fanno una copia per sessione e riempiono un elenco di quasi duplicati. Questa interroga il resto.

+

In esecuzione benché disabilitato

mismatch:running

Configurazione e stato che non concordano - una voce che il gestore è impostato a non avviare mai, in esecuzione comunque.

+

Tutto ciò che chiede diritti di debug

privilege:SeDebugPrivilege

Un privilegio che permette a un processo di aprirne qualsiasi altro. Vale la pena sapere quali servizi lo chiedono.

+

Ciò che lo strumento non ha potuto leggere

account:?

Le voci di cui questa sessione non ha potuto leggere l'account. Una domanda che services.msc non sa nemmeno porre.

+
+
+
+ +
+
+

Come si scrive una query

+
+
+

Termini

+
    +
  • I termini sono separati da spazi e devono corrispondere tutti - non esiste la parola chiave and perché non potrebbe significare nient'altro.
  • +
  • Lo stesso campo scritto due volte è l'unica eccezione: status:running status:stopped significa l'uno o l'altro, perché è ciò che scrive spuntare due filtri. Due limiti su un numero invece restringono - pid:>1000 pid:<2000 è l'intervallo tra i due.
  • +
  • ! davanti a un termine lo nega: !status:running. In un file batch con setlocal EnableDelayedExpansion, cmd si mangia quel ! senza dire nulla e la query significa in silenzio qualcos'altro - scriva ^! dentro le virgolette lì.
  • +
  • Una virgola dentro un campo è un oppure: start:manual,disabled.
  • +
  • Le virgolette proteggono qualsiasi cosa con spazi o due punti: account:"NT SERVICE\McmSvc".
  • +
  • Un percorso incollato così com'è - C:\Windows\System32\svchost.exe - viene cercato, non letto come un campo chiamato C.
  • +
+
+
+

Come viene confrontato il testo

+
    +
  • name:spool trova tutto ciò che lo contiene - il comportamento predefinito, perché è ciò che ci si aspetta da una casella di ricerca.
  • +
  • name:=spooler è esatto.
  • +
  • name:spool* accetta caratteri jolly, * e ?.
  • +
  • name:/^Sql.*/ è un'espressione regolare, e dentro le barre si scrive come si scrivono le espressioni regolari: \?, \\ e una virgola significano lì ciò che significano lì. Una barra che non si chiude mai è un errore - per cercare la barra stessa, scriva \/ oppure usi le virgolette.
  • +
  • Maiuscole e minuscole sono ignorate, anche fuori da ASCII - un nome visualizzato in polacco o in greco corrisponde comunque sia digitato.
  • +
+
+
+

Tre parole che ogni campo accetta

+ {{list:reserved-words}} +

Un valore digitato male è un errore, mai un risultato vuoto. status:runing risponde Did you mean running? e termina con il codice 2. Un elenco vuoto sembrerebbe una risposta, e la differenza tra "nulla corrisponde" e "ha digitato male" è la differenza tra una macchina pulita e un audit che non ha dimostrato nulla. Una query che non restringerebbe nulla viene rifiutata anche sulla riga di comando, perché uno script non operi sull'intera macchina a causa di un refuso.

+
+
+ +
+
+

Altri esempi

+

Ognuno funziona allo stesso modo nella casella di ricerca della finestra e dopo bws list --query, e ognuno è stato eseguito su un vero Windows prima di essere scritto qui. Ciò che trova dipende dalla macchina - e per una domanda sui guai, una risposta vuota è quella che vuole.

+
+

Stato e tipo di avvio

+
+ + + + + + + + +
QueryCosa trova
status:stopPending,startPendingBloccati in arresto o in avvio - l'attesa che lo snap-in mostra e che non finisce mai.
start:auto status:stopped trigger:noneImpostati per avviarsi automaticamente, fermi, e che non attendono un trigger - il breve elenco che vale la pena leggere dopo un riavvio.
start:delayedAutomatico, avviato un poco dopo le altre voci automatiche.
start:manual,disabled status:runningIn esecuzione benché nulla lo avvii all'avvio - qualcosa lo ha richiesto, un trigger lo ha avviato, o qualcuno lo ha fatto.
+
+

Account

+
+ + + + + + + +
QueryCosa trova
account:localsystem !publisher:microsoftIn esecuzione come LocalSystem, l'account più potente, da un file che Microsoft non ha firmato. Una query sull'editore legge le firme da sola, quindi richiede qualche secondo.
!account:localsystem,localservice,networkservice type:ownProcess,sharedProcessServizi in esecuzione con qualsiasi altro account - uno virtuale, uno gestito o quello di una persona.
account:"NT SERVICE"Un account virtuale proprio del servizio. Le virgolette tengono insieme le parole, a causa dello spazio.
+
+

File e firme

+
+ + + + + + + + + + +
QueryCosa trova
signed:notSigned,untrustedRoot,tamperedNessuna firma, una catena di cui Windows non si fida, o un file modificato dopo essere stato firmato.
signed:trusted !publisher:microsoftFirmato, affidabile, e non da Microsoft - il software che altre aziende hanno messo su questa macchina.
type:driver start:boot,system !signed:trustedDriver caricati all'avvio di Windows la cui firma Windows non ritiene affidabile. Su una macchina sana, nessuno.
!path:C:\Windows type:ownProcessUn servizio con un processo proprio il cui file si trova fuori dalla cartella Windows.
path:\AppData\Avviato da dentro il profilo di qualcuno, l'ultimo posto in cui ci si aspetta un servizio.
path:\System32\\ type:ownProcessUna barra rovesciata davanti a uno spazio rende lo spazio parte della parola, quindi un percorso che finisce con una barra rovesciata si scrive con due quando segue un altro termine. Alla fine della query ne basta una.
+
+

Trigger e dipendenze

+
+ + + + + + + + + +
QueryCosa trova
trigger:device status:stoppedIn attesa dell'arrivo di un dispositivo, quindi fermi per un motivo.
trigger:networkAvviato quando arriva una richiesta a un endpoint di rete - una porta, una named pipe o un'interfaccia RPC.
trigger:stopVoci che un trigger può fermare, non solo avviare.
dependson:WinmgmtVoci che hanno bisogno di WMI per funzionare.
requiredby:SpoolerTutto ciò di cui lo Spooler di stampa ha bisogno per funzionare, e ciò di cui a loro volta hanno bisogno quelli.
+
+

Privilegi e processi

+
+ + + + + + + + + + +
QueryCosa trova
privilege:SeTcbPrivilegeChiede di agire come parte del sistema operativo.
privilege:SeImpersonatePrivilege !account:localsystemPuò agire per conto di un client pur girando con un account diverso da LocalSystem.
sidtype:unrestrictedPorta nel suo processo un SID di servizio proprio, così i permessi possono nominarlo da solo. sidtype:restricted interroga quelli il cui processo è anche limitato in scrittura.
type:sharedProcess status:runningIn esecuzione dentro uno svchost condiviso, insieme ad altri.
memory:>200MBUn processo che usa più di 200 MB. La memoria viene letta da sola quando una query la chiede.
pid:1000-2000In un processo il cui id è tra 1000 e 2000.
+
+

Nomi e testo

+
+ + + + + + + + + + + +
QueryCosa trova
spoolUna parola sola, cercata nel nome, nel nome visualizzato, nell'account e nel percorso di avvio.
name:=wuauservEsattamente questo nome, e nulla che lo contenga soltanto.
name:win*Nomi che iniziano con win, scritti con un carattere jolly.
name:/svc$/Nomi che finiscono in svc, scritti come espressione regolare.
description:noneNessuna descrizione, il che vale per la maggior parte dei driver.
description:?Una descrizione che Windows non ha potuto consegnare, di solito perché punta a un file di lingua che non c'è.
peruser:templateI modelli per utente che Windows copia per ogni sessione aperta.
+
+
+
+
+ +
+
+

Ogni campo

+

Costruita dal programma stesso, così questa tabella non può discostarsi da ciò che lo strumento accetta. Un campo senza elenco di valori accetta testo, un numero o una dimensione - la terza colonna dice quale.

+ {{table:query-fields}} +
+
+ +
+
+

Due cose da sapere

+
+
+

Alcuni campi sono costosi, e chiederli attiva la lettura

+

Le firme richiedono parecchi secondi su un'intera macchina e la memoria è una misurazione più che un'impostazione, quindi nessuna delle due viene letta per un elenco se non richiesta. Una query che ne menziona una attiva quella lettura da sola - non deve ricordarsi di --signatures oltre a signed:no. Nella finestra, una query sulle firme dice che la risposta è incompleta finché non arrivano, invece di mostrare un elenco più corto come se fosse la risposta.

+
+
+

Un risultato giudicato su qualcosa di illeggibile lo dice

+

Se delle voci sono state giudicate su un campo che questa sessione non ha potuto leggere, il risultato porta una riga che dice quante - perché un risultato simile può mancare di voci, o contenerne che non c'entrano. È la stessa regola che tiene tutto lo strumento: una lettura non riuscita è visibile nella risposta, mai inghiottita. Un editore riceve lo stesso trattamento quando solo il certificato lo afferma: accanto a qualsiasi verdetto diverso da trusted il nome è mostrato come not verified, e publisher: conta la voce come incerta in una riga a parte - così !publisher:microsoft tiene un file Microsoft che qualcuno ha modificato dopo la firma.

+
+
+ Il riferimento della riga di comando +
+
diff --git a/site/pages/query-language/page.json b/site/pages/query-language/page.json index d35ebe45..aedeb058 100644 --- a/site/pages/query-language/page.json +++ b/site/pages/query-language/page.json @@ -9,6 +9,7 @@ "pl": "jezyk-zapytan", "de": "abfragesprache", "fr": "langage-de-requete", - "es": "lenguaje-de-consulta" + "es": "lenguaje-de-consulta", + "it": "linguaggio-di-query" } } diff --git a/site/pages/sc-exe-and-powershell/it.html b/site/pages/sc-exe-and-powershell/it.html new file mode 100644 index 00000000..3db499cf --- /dev/null +++ b/site/pages/sc-exe-and-powershell/it.html @@ -0,0 +1,97 @@ + + + + + +
+
+ Guida +

sc.exe, Get-Service e questo strumento

+

Entrambi sono già sulla macchina, ed entrambi resteranno utili. Questa pagina parla di dove si fermano - e dice chiaramente dove sono ancora la risposta migliore.

+
+
+ +
+
+

Dove si ferma ciascuno

+
+
+

sc.exe

+

Raggiunge quasi tutto ciò che sa il gestore di controllo dei servizi, e non le dice nulla su come chiederlo. La sintassi è degli anni Novanta - sc config X start= auto, dove lo spazio dopo il segno uguale è obbligatorio e la sua assenza è un fallimento silenzioso nel fare ciò che intendeva.

+

Risponde su una voce alla volta. Non c'è filtro, né un output che uno script possa analizzare senza scrivere un parser, né anteprima: sc stop o funziona o restituisce un numero.

+
+
+

Get-Service e i cmdlet *-Service

+

Oggetti veri, una pipeline e una vista superficiale. In Windows PowerShell 5.1, quello fornito con Windows, Get-Service non mostra l'account con cui gira un servizio né la sua descrizione. PowerShell 7 mostra entrambi, e anche il percorso di avvio, e si installa a parte.

+

Stop-Service -Force significa "anche se qualcosa ne dipende" - ferma i dipendenti, e glielo dice dopo e non prima.

+
+
+
+
+ +
+
+

Le stesse domande, in tre modi

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DomandaCon ciò che c'è sulla macchinaQui
Cosa dovrebbe essere attivo e non lo èGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }bws list --query "start:auto !status:running"
Quali servizi hanno un eseguibile non firmatoLeggere ogni percorso di avvio, risolverlo, chiamare Get-AuthenticodeSignature su ciascuno - uno script, non un comandobws list --query "signed:no"
Cosa trascinerebbe con sé fermare questosc enumdepend X, poi leggere l'elenco e decidere da sébws stop X --dry-run --dependents, che è il piano che verrebbe eseguito
Cosa è cambiato dalla settimana scorsaNiente, a meno che abbia scritto lei stessa il raccoglitorebws snapshot diff before.json --live
Chi ha cambiato il tipo di avvio, e quandoGet-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, poi leggere il messaggio di ogni eventobws history Spooler, la cui prima riga dice fin dove arriva il registro
Output leggibile da una macchinaOggetti da PowerShell, testo da sc.exe--json su ogni comando, sullo standard output, con gli avvisi sullo standard error
+
+

Dove questo strumento non concorda con sc.exe su un servizio, è un bug qui. Parte della suite di test esegue entrambi sulla macchina in cui gira e li confronta voce per voce, e una differenza tra i due è la cosa più utile da mettere in una segnalazione.

+
+
+ +
+
+

Quando continuare a usare ciò che ha

+
    +
  • È su una macchina che toccherà una volta sola. Entrambi sono già lì e nulla deve passare una policy.
  • +
  • Deve cambiare l'account, il percorso di avvio o le azioni di ripristino. sc.exe fa tutte e tre le cose. Questo strumento mostra l'account e il percorso di avvio e non cambia nessuno dei due, e legge le azioni di ripristino solo per avvisare prima di terminare un processo.
  • +
  • Deve creare o eliminare un servizio. sc create e sc delete. Non qui, di proposito.
  • +
  • È già immerso in una pipeline PowerShell. bws list --json torna come oggetti tramite ConvertFrom-Json, così si unisce alla pipeline invece di sostituirla.
  • +
+
+
+ +
+
+

Insieme, anziché al posto

+

Lo strumento che risponde a cosa non va in questa macchina e gli strumenti che cambiano un'impostazione non sono lo stesso strumento. Ponga la domanda qui, legga il piano qui e usi ciò che preferisce per eseguirlo - il piano stampa la riga di comando che chiede la stessa cosa, e quella riga è fatta per essere copiata.

+ +
+
diff --git a/site/pages/sc-exe-and-powershell/page.json b/site/pages/sc-exe-and-powershell/page.json index cd95efef..79f17e21 100644 --- a/site/pages/sc-exe-and-powershell/page.json +++ b/site/pages/sc-exe-and-powershell/page.json @@ -9,6 +9,7 @@ "pl": "sc-exe-i-powershell", "de": "sc-exe-und-powershell", "fr": "sc-exe-et-powershell", - "es": "sc-exe-y-powershell" + "es": "sc-exe-y-powershell", + "it": "sc-exe-e-powershell" } } diff --git a/site/pages/services-msc-alternative/it.html b/site/pages/services-msc-alternative/it.html new file mode 100644 index 00000000..19b229fe --- /dev/null +++ b/site/pages/services-msc-alternative/it.html @@ -0,0 +1,102 @@ + + + + + +
+
+ Guida +

Un'alternativa a services.msc

+

Lo snap-in Servizi è cambiato appena dai tempi di Windows 2000. È ancora il modo più rapido per avviare un servizio che vede già sullo schermo, e il più lento per rispondere a qualsiasi domanda su una macchina.

+
+
+ +
+
+

Cosa spinge a cercare altrove

+
+
    +
  • Nessuna ricerca. L'unica navigazione è digitare una lettera per saltare al primo nome visualizzato che inizia con essa. Su una macchina con ottocento voci è scorrere con passaggi in più.
  • +
  • Nessun filtro. Non c'è modo di chiedere cosa è impostato per avviarsi automaticamente e non è in esecuzione - l'unica domanda che trova una macchina guasta.
  • +
  • Una riga alla volta. Riavviare dodici servizi significa dodici clic destri e dodici attese.
  • +
  • "Arresto in corso..." senza via d'uscita se non Gestione attività e indovinare quale svchost terminare.
  • +
+
    +
  • Nessuna cronologia. Nessuno sa chi ha impostato quel tipo di avvio su Disabilitato, né quando, né se era già così il mese scorso.
  • +
  • Dati nascosti. Il processo, i trigger, i privilegi richiesti, il descrittore di sicurezza, chi ha firmato l'eseguibile - niente di tutto questo è nello snap-in, e tutto conta quando qualcosa non va.
  • +
  • Le colonne non possono cambiare. Nome, descrizione, stato, tipo di avvio, connessione come. Questa è tutta la lista, e nessuna può essere ordinata in modo utile su una macchina vera.
  • +
+
+
+
+ +
+
+

Le stesse tre attività, in entrambi

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VuoleIn services.mscQui
Trovare ciò che dovrebbe essere attivo e non lo èOrdinare per tipo di avvio, scorrere, leggere ogni rigastart:auto !status:running
Sapere cosa trascina con sé un arrestoUna finestra di dialogo che nomina i dipendenti dopo che ha premuto ArrestaUn piano prima che accada qualsiasi cosa, con ogni dipendente come passaggio e un avviso quando uno è qualcosa di cui la macchina ha bisogno
Sapere cosa è cambiato dalla settimana scorsaNientebws snapshot diff before.json --live
Sapere chi ha cambiato un tipo di avvioNientebws history Spooler, dal registro di sistema
Riavviare dodici serviziDodici clic destriSelezionarne dodici, un piano, un'esecuzione, un rapporto
Vedere chi ha firmato l'eseguibile di un servizioNon mostratoUna colonna, e un criterio di ricerca: signed:no
Automatizzare qualsiasi cosa con uno scriptNon automatizzabilebws, con --json e un codice di uscita per ogni conclusione
+
+
+
+ +
+
+

Cosa lo snap-in fa ancora meglio

+

Due cose, e fingere il contrario sarebbe il tipo di affermazione che questo progetto non fa.

+
    +
  • È già sulla macchina. Niente da scaricare, niente da far passare attraverso una policy sul software. Su una macchina che toccherà una volta sola, questo è tutto l'argomento.
  • +
  • Modifica le azioni di ripristino, l'account e il percorso di avvio. Questo strumento mostra l'account e il percorso di avvio e non cambia nessuno dei due, e legge le azioni di ripristino solo per avvisare prima di terminare un processo. Creare, eliminare o reindirizzare un servizio non è nemmeno qui.
  • +
+

Ciò che non sa fare affatto è il motivo per cui questo esiste: porre una domanda, mostrare prima un piano e dire cosa è andato alla deriva.

+
+
+ +
+
+

Cos'è questo

+

{{product}} è libero e gratuito con licenza GPL-3.0, un file per metà o un programma di installazione per l'intera macchina, e non si collega mai a Internet. Consultare non richiede diritti di amministratore - cambiare sì, e lo dice invece di fallire in silenzio.

+ +
+
diff --git a/site/pages/services-msc-alternative/page.json b/site/pages/services-msc-alternative/page.json index cd527327..d87472c4 100644 --- a/site/pages/services-msc-alternative/page.json +++ b/site/pages/services-msc-alternative/page.json @@ -9,6 +9,7 @@ "pl": "alternatywa-dla-services-msc", "de": "services-msc-alternative", "fr": "alternative-a-services-msc", - "es": "alternativa-a-services-msc" + "es": "alternativa-a-services-msc", + "it": "alternativa-a-services-msc" } } diff --git a/site/pages/snapshots-and-drift/it.html b/site/pages/snapshots-and-drift/it.html new file mode 100644 index 00000000..4cdb55a2 --- /dev/null +++ b/site/pages/snapshots-and-drift/it.html @@ -0,0 +1,65 @@ + + + + + +
+
+ Ciò che services.msc non ha mai fatto +

Snapshot e deriva

+

Ogni altro strumento le dice com'è una macchina adesso. La domanda che un amministratore ha davvero è cosa è diverso da quando funzionava - e nessun Windows di serie vi risponde.

+
+
+ +
+
+

Cosa contiene uno snapshot

+

L'intera macchina in un istante: ogni servizio e ogni driver, con il suo tipo di avvio, account, percorso di avvio e argomenti, l'hash e il firmatario del file che esegue, le sue dipendenze e ciò che ne dipende, i suoi trigger, i privilegi richiesti, il tipo di SID e il descrittore di sicurezza - più il nome della macchina, l'account che lo ha preso e se quell'account era un amministratore.

+
bws snapshot create before.json --note "before the patch"
+

È JSON con un campo per riga. È voluto: significa che uno snapshot entra in un repository e git diff lo legge, così il confronto dello strumento stesso non è l'unico modo di guardarne uno.

+

Lo archivi per ciò che è. Uno snapshot descrive l'intera macchina, fino a ogni percorso di avvio e ogni descrittore di sicurezza. Viene scritto con i permessi che la sua cartella ha già, e lo strumento non restringe nulla - quindi una cartella che altre persone possono leggere è una in cui possono leggere tutto questo.

+
+
+ +
+
+

Poi chiedere cosa è diverso

+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
+
    +
  • Configurazione e stato di esecuzione sono segnalati separatamente. Due snapshot presi a un giorno di distanza differiscono per ciò che capita di essere in esecuzione, e quasi nulla di questo è deriva. Mescolata, l'unica riga che conta - un tipo di avvio che qualcuno ha cambiato - è sepolta sotto quaranta che non contano.
  • +
  • Ciò che non si è potuto confrontare è elencato, non nascosto. Un campo che uno dei due snapshot non ha mai letto, perché quella sessione non aveva diritti su di esso, esce come not compared sotto la sua voce, e il riepilogo conta quelle voci. Quindi un confronto che dice nulla è cambiato significa che nulla è cambiato in ciò che entrambi i lati potevano vedere.
  • +
+
    +
  • Uno snapshot con privilegi elevati contro uno senza mentirebbe, segnalando come rimosse voci che nessuno ha rimosso. Ogni file registra se l'account che lo ha preso era un amministratore, e il confronto lo dice.
  • +
  • Due file, non solo un file e questa macchina. Ne prenda uno in staging e uno in produzione e li confronti ovunque - la risposta a perché lo staging differisce non ha bisogno di nessuna delle due macchine presenti.
  • +
+
+

La finestra fa lo stesso in Audit.... Take snapshot... scrive lo stesso file, con una nota se ne digita una, e Compare with this machine... o Compare two snapshots... mostra cosa è cambiato al posto dell'elenco, una riga per campo, con tutto ciò che rende il confronto meno che esatto detto sopra la tabella. Show lo restringe alle differenze o a un campo, e Export... lo scrive in un file CSV.

+
+
+ +
+
+

Il codice di uscita è il punto

+

--exit-code termina con 5 quando la configurazione differisce - una voce aggiunta o rimossa, o una impostata diversamente. Un servizio che si è solo fermato o avviato da solo viene segnalato e non conta, e nemmeno le copie per utente che Windows fa per ogni sessione aperta, che vengono escluse e contate. Non è un fallimento - trovare la deriva è ciò per cui serve questo strumento, e trovarla non è un fallimento - ed è per questo che ha un numero suo invece di prendere in prestito quello che significa che qualcosa è andato storto.

+
# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - nessuna deriva di configurazione
+#   5 - la configurazione è andata alla deriva, e drift.json dice come
+#   3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+

Questo è tutto il meccanismo: una base di riferimento presa quando la macchina era nota come buona, e una domanda posta ogni notte. Se la prima notte risponde 5, qualcuno lo scopre la prima notte e non la mattina in cui qualcosa si rompe.

+ Usarlo per un audit +
+
diff --git a/site/pages/snapshots-and-drift/page.json b/site/pages/snapshots-and-drift/page.json index 1709ed28..e5e4aafb 100644 --- a/site/pages/snapshots-and-drift/page.json +++ b/site/pages/snapshots-and-drift/page.json @@ -9,6 +9,7 @@ "pl": "snapshoty-i-dryf", "de": "snapshots-und-drift", "fr": "instantanes-et-derive", - "es": "instantaneas-y-deriva" + "es": "instantaneas-y-deriva", + "it": "snapshot-e-deriva" } } diff --git a/site/pages/stop-a-service-that-will-not-stop/it.html b/site/pages/stop-a-service-that-will-not-stop/it.html new file mode 100644 index 00000000..8088ba09 --- /dev/null +++ b/site/pages/stop-a-service-that-will-not-stop/it.html @@ -0,0 +1,68 @@ + + + + + +
+
+ Guida +

Un servizio bloccato su Arresto in corso...

+

Lo snap-in mostra Arresto in corso e non si muove mai. La risposta solita è Gestione attività, un'ipotesi su quale svchost.exe lo ospiti, e Termina attività - che termina anche ogni altro servizio di quel processo, senza dirle quali erano.

+
+
+ +
+
+

Perché succede

+
    +
  • Il servizio non risponde alla richiesta di arresto. Windows glielo chiede con garbo e aspetta. Un servizio che si è bloccato, o che attende qualcosa che non tornerà, non risponde mai.
  • +
  • Qualcosa che ne dipende è ancora in esecuzione. Il gestore rifiuta l'arresto invece di rompere l'altro, e lo snap-in lo mostra come un'attesa.
  • +
  • Condivide il processo con altri. La maggior parte dei servizi Windows vive dentro uno svchost.exe condiviso. Terminare quel processo li termina tutti, che è esattamente ciò che fa Gestione attività senza nominarli.
  • +
+
+
+ +
+
+

Guardi prima di terminare qualsiasi cosa

+

Chieda cosa si porterebbe via terminarlo. Non accade nulla finché non toglie --dry-run.

+
$ bws kill Spooler --dry-run
+

L'anteprima nomina il processo con il suo numero, nomina ogni altro servizio che vive al suo interno e mostra due passaggi anziché uno: chiedere al servizio di fermarsi e, solo se questo non funziona, terminare il processo. Un servizio che si ferma da solo non viene mai terminato.

+
+
    +
  • --force salta il passaggio cortese e termina subito il processo. Cambia il piano e non la sua esecuzione, così l'anteprima mostra un passaggio invece di due e la differenza è visibile prima che accada qualsiasi cosa.
  • +
  • --restart rimette tutto a posto una volta sparito il processo - la voce su cui ha chiesto e tutto ciò che ne condivideva il processo. Senza, la macchina resta con quei servizi fermi, e il rapporto dice come riavviarli.
  • +
+
    +
  • Il rifiuto viene prima del pulsante. Un driver, un processo che il sistema protegge, un servizio per il quale il gestore non accetta un arresto - rifiutati quando il piano viene costruito, con la ragione, anziché dopo sessanta secondi di attesa.
  • +
  • Un avviso quando conta. Se la voce è una senza la quale la macchina non funziona, il piano lo dice - fermarla fa cadere la macchina, non solo il servizio.
  • +
+
+

Terminare un processo è l'unica cosa che fa questo strumento a cui nessuno può opporsi a nome della macchina. Per questo è un comando a sé, per questo l'anteprima nomina ogni servizio che si porta via, e per questo il passaggio cortese viene prima a meno che lei dica altrimenti.

+
+
+ +
+
+

L'ordine più sicuro

+
    +
  1. Vedere cos'è. bws show Spooler - il processo, ciò che ne dipende, da cosa dipende e se accetta richieste di arresto.
  2. +
  3. Provare l'arresto ordinario, come piano. bws stop Spooler --dry-run --dependents. Se la risposta è un rifiuto, dice quale delle tre ragioni è.
  4. +
  5. Se non si ferma, guardare cosa costa terminarlo. bws kill Spooler --dry-run, e leggere l'elenco dei servizi che condividono quel processo.
  6. +
  7. Poi farlo, con una via di ritorno. bws kill Spooler --restart. Il rapporto finisce con ciò che non ha funzionato e i comandi che rimettono le cose a posto.
  8. +
+

Tutti e quattro funzionano allo stesso modo nella finestra: clic destro su una riga, scegliere Force stop..., leggere il piano, e il pulsante sotto porta il nome di ciò che farà.

+
+
+ +
+
+

Perché non usare semplicemente Gestione attività

+

Perché risponde a un'altra domanda. Gestione attività conosce i processi e questo problema riguarda i servizi, e i due non corrispondono uno a uno.

+

Uno svchost.exe condiviso può ospitare una dozzina di servizi. Gestione attività lo terminerà senza dire quali dodici, nessuno torna da solo e nulla le dice dopo cosa si è fermato. Un EDR che segnala un processo che termina svchost.exe fa il suo lavoro, e non può distinguere il suo clic da qualsiasi altro.

+ +
+
diff --git a/site/pages/stop-a-service-that-will-not-stop/page.json b/site/pages/stop-a-service-that-will-not-stop/page.json index a56df841..ee2c2540 100644 --- a/site/pages/stop-a-service-that-will-not-stop/page.json +++ b/site/pages/stop-a-service-that-will-not-stop/page.json @@ -9,6 +9,7 @@ "pl": "usluga-ktora-nie-chce-sie-zatrzymac", "de": "windows-dienst-laesst-sich-nicht-beenden", "fr": "service-windows-impossible-a-arreter", - "es": "servicio-de-windows-que-no-se-detiene" + "es": "servicio-de-windows-que-no-se-detiene", + "it": "servizio-windows-che-non-si-ferma" } } diff --git a/site/pages/what-should-be-running/it.html b/site/pages/what-should-be-running/it.html new file mode 100644 index 00000000..cd828e4c --- /dev/null +++ b/site/pages/what-should-be-running/it.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Guida +

Quali servizi dovrebbero essere attivi?

+

La risposta onesta è che nessuno può dirglielo, e che ogni elenco che pretende di farlo descrive una macchina che non è la sua. Ciò a cui si può rispondere è più stretto e molto più utile: cosa non torna su questa macchina, e cosa è diverso da quando funzionava.

+
+
+ +
+
+

Perché la domanda generale non ha risposta

+
    +
  • L'insieme cambia con l'edizione, la versione e il ruolo di Windows. Un controller di dominio, un portatile e un host di container non concordano su quasi nulla, e un elenco scritto per uno è sbagliato per gli altri.
  • +
  • Metà di ciò che è installato non viene da Windows. Driver, agenti, servizi di aggiornamento, demoni di licenza - ognuno è stato messo lì da qualcosa, e nessun elenco generale sa da cosa.
  • +
  • La maggior parte dei servizi è fatta per essere ferma. Un Windows moderno avvia una frazione di ciò che registra: il resto attende un trigger - l'arrivo di un dispositivo, l'apertura di una porta, l'ingresso in un dominio - e fermo è il loro stato corretto.
  • +
  • Gli elenchi "disabiliti questi per le prestazioni" sono il modo in cui le macchine si rompono. Il servizio che sembra inattivo è quello che qualcos'altro avvia su richiesta, e il guasto compare una settimana dopo da qualche parte senza relazione.
  • +
+
+
+ +
+
+

Le domande che hanno risposte

+
+
+

Ciò che dovrebbe essere attivo e non lo è

+

start:auto !status:running

+

A Windows è stato detto di avviare questi e non sono in esecuzione. Su una macchina sana è un elenco breve - un paio di voci che partono tardi e si fermano di nuovo. Qualsiasi altra cosa merita un'occhiata.

+
+
+

Ciò che è disabilitato e gira comunque

+

mismatch:running

+

Configurazione e stato non concordano. Di solito qualcuno lo ha disabilitato senza fermarlo, e il prossimo riavvio sarà una sorpresa.

+
+
+

Ciò che punta a un file sparito

+

file:missing

+

Una disinstallazione che ha lasciato dietro di sé la registrazione. Innocuo finché qualcosa non prova ad avviarlo, e un indizio su ciò che c'era su questa macchina.

+
+
+

Ciò che nessuno ha firmato

+

signed:no peruser:no

+

Non è prova di nulla in sé, ed è il posto giusto da cui iniziare a leggere. Il secondo termine esclude le famiglie per utente, che altrimenti riempiono l'elenco di quasi duplicati.

+
+
+

Ciò che chiede i privilegi più forti

+

privilege:SeDebugPrivilege

+

Un privilegio che permette a un processo di aprirne qualsiasi altro. Una manciata di servizi legittimi lo chiede, e vale la pena sapere quali sulla sua macchina.

+
+
+

Ciò che attende un trigger

+

trigger:any status:stopped

+

Fermi perché nulla li ha ancora chiamati, e non perché qualcosa non va. Sapere quali sono è ciò che fa smettere di allarmare il primo elenco.

+
+
+
+
+ +
+
+

Quella che le batte tutte

+

Chieda alla macchina stessa, quando funzionava.

+

Prenda uno snapshot il giorno in cui la macchina entra in servizio. Allora questo dovrebbe essere attivo diventa questo era attivo quando tutto funzionava - una domanda sulla sua macchina e non su una macchina di un articolo.

+
bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... una settimana, una patch o un incidente dopo
+bws snapshot diff C:\baselines\web01.json --live
+

La configurazione è segnalata a parte rispetto allo stato di esecuzione, così la risposta non sono quaranta servizi che capita siano attivi - è il tipo di avvio che qualcuno ha cambiato.

+ Fare l'audit della deriva di una macchina +
+
+ +
+
+

Prima di fermare qualsiasi cosa

+

Ogni arresto in questo strumento mostra prima il suo piano: i passaggi, ciò che cade con essi e un avviso quando uno di essi è qualcosa senza cui la macchina non funziona. L'elenco di questi è un elenco iniziale di sette - le due metà di RPC e l'avviatore DCOM, il gestore degli account, l'isolamento delle chiavi, il gestore delle sessioni e Plug and Play - e Desktop remoto non c'è, quindi in una sessione remota, legga il piano.

+ +
+
diff --git a/site/pages/what-should-be-running/page.json b/site/pages/what-should-be-running/page.json index 357b088f..5e4b739d 100644 --- a/site/pages/what-should-be-running/page.json +++ b/site/pages/what-should-be-running/page.json @@ -9,6 +9,7 @@ "pl": "ktore-uslugi-windows-powinny-dzialac", "de": "welche-windows-dienste-laufen-sollten", "fr": "quels-services-windows-devraient-tourner", - "es": "que-servicios-de-windows-deberian-estar-en-marcha" + "es": "que-servicios-de-windows-deberian-estar-en-marcha", + "it": "quali-servizi-windows-dovrebbero-essere-attivi" } } diff --git a/site/site.json b/site/site.json index 34f5af19..3047cca7 100644 --- a/site/site.json +++ b/site/site.json @@ -7,7 +7,7 @@ "support": "https://donislawdev.com/support/", "_languages": "The languages that are PUBLISHED, in the order the switch lists them. The first is the default and lives at the root. The others live under /{code}/. A language that is in language_registry and not here is prepared and unreachable, which is how it is written and built before it goes live.", - "languages": ["en", "de", "es", "fr", "pl"], + "languages": ["en", "de", "es", "fr", "it", "pl"], "_language_registry": "How each language is written, in one place. The key is the address code in lower case and the name of its files (site/i18n/{code}.json, site/pages/{id}/{code}.html). tag is what lang and hreflang carry, locale is og:locale, name is the language in its OWN alphabet and is never translated, short is what the switch shows for the language you are in. dir is written only when it is rtl. slugs is own when the language has a slug of its own for every page in each page.json, and english when its pages live at the default language's slugs - the choice for alphabets that cannot be an ASCII address without being transliterated.", "language_registry": { From 20823ff54f1d142f8751209390a9c76722313206 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 21 Oct 2026 10:48:44 +0200 Subject: [PATCH 5/5] Add the website in Brazilian Portuguese Twelve pages and the language file, with slugs of their own, held against the English pages for shape, commands and tokens and stamped with the English they follow. Co-Authored-By: Claude Sonnet 5.5 --- site/i18n/pt-br.json | 95 +++++++++ site/pages/404/page.json | 3 +- site/pages/404/pt-br.html | 30 +++ site/pages/audit-windows-services/page.json | 3 +- site/pages/audit-windows-services/pt-br.html | 64 ++++++ site/pages/cli-reference/page.json | 3 +- site/pages/cli-reference/pt-br.html | 194 +++++++++++++++++ site/pages/download/page.json | 3 +- site/pages/download/pt-br.html | 86 ++++++++ site/pages/faq/page.json | 3 +- site/pages/faq/pt-br.html | 78 +++++++ site/pages/home/page.json | 3 +- site/pages/home/pt-br.html | 200 ++++++++++++++++++ site/pages/query-language/page.json | 3 +- site/pages/query-language/pt-br.html | 178 ++++++++++++++++ site/pages/sc-exe-and-powershell/page.json | 3 +- site/pages/sc-exe-and-powershell/pt-br.html | 97 +++++++++ site/pages/services-msc-alternative/page.json | 3 +- .../pages/services-msc-alternative/pt-br.html | 102 +++++++++ site/pages/snapshots-and-drift/page.json | 3 +- site/pages/snapshots-and-drift/pt-br.html | 65 ++++++ .../page.json | 3 +- .../pt-br.html | 68 ++++++ site/pages/what-should-be-running/page.json | 3 +- site/pages/what-should-be-running/pt-br.html | 86 ++++++++ site/site.json | 2 +- 26 files changed, 1368 insertions(+), 13 deletions(-) create mode 100644 site/i18n/pt-br.json create mode 100644 site/pages/404/pt-br.html create mode 100644 site/pages/audit-windows-services/pt-br.html create mode 100644 site/pages/cli-reference/pt-br.html create mode 100644 site/pages/download/pt-br.html create mode 100644 site/pages/faq/pt-br.html create mode 100644 site/pages/home/pt-br.html create mode 100644 site/pages/query-language/pt-br.html create mode 100644 site/pages/sc-exe-and-powershell/pt-br.html create mode 100644 site/pages/services-msc-alternative/pt-br.html create mode 100644 site/pages/snapshots-and-drift/pt-br.html create mode 100644 site/pages/stop-a-service-that-will-not-stop/pt-br.html create mode 100644 site/pages/what-should-be-running/pt-br.html diff --git a/site/i18n/pt-br.json b/site/i18n/pt-br.json new file mode 100644 index 00000000..3c5bdee9 --- /dev/null +++ b/site/i18n/pt-br.json @@ -0,0 +1,95 @@ +{ + "_translated_from": "1867e30d6665", + "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.", + + "chrome.skip": "Ir para o conteúdo", + "chrome.nav": "Site", + "chrome.language": "Idioma", + + "chrome.footer.product": "Produto", + "chrome.footer.guides": "Guias", + "chrome.footer.project": "Projeto", + "chrome.footer.source": "Código-fonte no GitHub", + "chrome.footer.releases": "Versões", + "chrome.footer.issues": "Rastreador de problemas", + "chrome.footer.security": "Relatar um problema de segurança", + "chrome.footer.support": "Apoiar o projeto", + + "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publicado sob a Licença Pública Geral GNU, versão 3. Feito com um fluxo de trabalho assistido por IA.", + "chrome.legal.trademark": "O {{product}} não é afiliado, endossado nem patrocinado pela Microsoft. Windows é uma marca do grupo de empresas Microsoft, e o nome é usado aqui apenas para dizer o que a ferramenta gerencia.", + "chrome.legal.privacy": "Este site não define cookies, não executa scripts e não carrega nada de nenhum outro lugar.", + + "table.head.code": "Código", + "table.head.meaning": "Significado", + "table.head.switch": "Opção", + "table.head.what": "O que faz", + "table.head.where": "Onde atua", + "table.head.field": "Campo", + "table.head.asks": "Pergunta sobre", + "table.head.values": "Valores", + + "exit.ok": "Feito, e tudo chegou aonde ia.", + "exit.runtime": "A ferramenta falhou - não conseguiu fazer o que foi pedido, por um motivo que é da ferramenta e não do plano.", + "exit.usage": "A linha de comando estava errada. A um comando digitado errado é oferecido o que você provavelmente quis dizer.", + "exit.incomplete": "O plano era bom, foi executado, e algo nele não chegou aonde ia - o gerenciador recusou, ou a sessão não tinha direitos sobre aquilo.", + "exit.interrupted": "Alguém parou a execução à mão. Diferente de zero mesmo que cada etapa tenha chegado, para que um script em volta não trate uma execução interrompida como limpa.", + "exit.differences": "Uma comparação rodou e encontrou a configuração desviada - uma entrada adicionada ou removida, ou uma configurada de outro jeito. O estado de execução sozinho não é deriva. Somente com --exit-code, porque encontrar deriva é para o que esta ferramenta serve, e encontrá-la não é uma falha.", + + "switch.query": "Restringir a listagem com a linguagem de consulta.", + "switch.signatures": "Ler quem assinou cada executável e se o Windows confia nele. Vários segundos em uma máquina inteira, então fica desligado a menos que seja pedido - e uma consulta sobre assinaturas o liga sozinha.", + "switch.memory": "Ler o que o processo de cada entrada em execução está usando. Desligado por padrão porque é uma medição e não uma configuração: um segundo depois ela é diferente.", + "switch.required-by": "Ler quais entradas deixam de funcionar se uma for parada, perguntado diretamente ao Windows em vez de deduzido do que cada uma declara. Uma chamada por entrada, então fica desligado a menos que seja pedido. show e snapshot create o leem toda vez.", + "switch.follow-network": "Deixar a ferramenta sair desta máquina, de qualquer modo - um caminho de lançamento que vive no compartilhamento de outra pessoa, e um certificado que esta máquina ainda não tem. Desligado por padrão por segurança: um compartilhamento inalcançável custa vinte e um segundos e se autentica como quem executou, e buscar um certificado é uma conexão com um terceiro no meio de uma listagem comum. Sem ele, uma assinatura é verificada contra o que há aqui, e um resultado que pode ter sido causado por não olhar é informado como não lido e não como um veredito.", + "switch.force": "No kill, encerrar o processo na hora sem pedir com educação - a pré-visualização mostra então uma etapa em vez de duas. No snapshot create, substituir um instantâneo que já existe - um arquivo que não é um instantâneo nunca é substituído.", + "switch.restart": "No kill, trazer a entrada de volta depois que o processo some, junto com tudo o que o dividia.", + "switch.stop": "No start-type, e só ao lado de disabled, parar a entrada no mesmo plano depois que a configuração é gravada. Um tipo de inicialização muda a próxima inicialização e nada agora, então sem ele uma entrada em execução configurada como desabilitada continua rodando.", + "switch.full": "No show, imprimir também os campos realmente vazios. Um campo que ninguém conseguiu ler é impresso de qualquer jeito.", + "switch.components": "No license, transformar o aviso em cada componente dentro deste executável com sua versão, sua licença e sua origem. O mesmo conjunto que a lista de materiais publicada ao lado do download traz, porque as duas são geradas de um único registro.", + "switch.json": "O mesmo documento, legível por máquina, na saída padrão.", + "switch.note": "Para que o instantâneo foi feito, guardado dentro do arquivo.", + "switch.exit-code": "Terminar com o código 5 quando a configuração difere - uma entrada adicionada ou removida, ou uma configurada de outro jeito. O estado de execução sozinho não conta. Desligado por padrão, para que um script que só quer as diferenças impressas não tropece em encontrar algumas.", + "switch.live": "Comparar o arquivo com esta máquina como está agora, em vez de com um segundo arquivo.", + "switch.timing": "Quanto tempo levou cada parte da leitura, no erro padrão.", + "switch.dry-run": "Imprimir o plano e não mudar nada. É o mesmo plano que uma execução roda - não existe um segundo caminho de código para a execução de verdade.", + "switch.dependents": "Colocar no plano, como etapas próprias, os serviços que deixariam de funcionar.", + "switch.timeout": "Quanto tempo uma etapa pode ficar sem progresso antes de ser abandonada, contado de novo toda vez que o serviço informa progresso. Sessenta segundos, a menos que você diga outra coisa. Um serviço que continua informando progresso é observado pelo tempo que for preciso. Esgotar o prazo é o fim da observação e não uma falha, e o relatório diz onde a entrada foi deixada.", + + "field.name": "o nome do serviço, aquele pelo qual o Windows o identifica", + "field.display": "o nome de exibição, como este Windows o escreve", + "field.description": "o que a entrada diz sobre si mesma", + "field.type": "que tipo de entrada é", + "field.peruser": "se é uma das famílias por usuário de que o Windows faz uma cópia por sessão", + "field.status": "o que está fazendo agora", + "field.start": "o que o gerenciador faz com ela na próxima inicialização", + "field.account": "a conta sob a qual ela roda, como o gerenciador a escreve", + "field.pid": "o processo em que ela está rodando", + "field.trigger": "uma condição que a inicia ou a para", + "field.path": "a linha de comando que o gerenciador inicia", + "field.file": "se o arquivo que ela executa está no disco", + "field.signed": "o que o Windows pensa da assinatura do arquivo, sem verificar a revogação", + "field.publisher": "quem assinou o arquivo - comprovado apenas por uma assinatura confiável", + "field.privilege": "um privilégio que a entrada pede", + "field.dependson": "do que esta precisa", + "field.requiredby": "o que deixa de funcionar se esta parar", + "field.sidtype": "o tipo de SID do serviço", + "field.sddl": "o descritor de segurança, como texto", + "field.memory": "o que o processo dela está usando", + "field.mismatch": "configuração e estado que discordam", + + "field.open.name": "texto", + "field.open.display": "texto", + "field.open.description": "texto", + "field.open.account": "texto, p. ex. localsystem", + "field.open.pid": "um número: 1234, >1000, 100-200", + "field.open.path": "texto", + "field.open.publisher": "texto", + "field.open.privilege": "texto, p. ex. SeDebugPrivilege", + "field.open.dependson": "um nome de serviço", + "field.open.requiredby": "um nome de serviço", + "field.open.sddl": "texto", + "field.open.memory": "um tamanho com unidade: 500MB, >1GB, 100MB-1GB", + + "reserved.any": "há um valor, seja qual for", + "reserved.none": "realmente não há valor nenhum - a entrada não tem", + "reserved.unreadable": "a ferramenta não conseguiu ler este campo, ou não o leu, o que é uma pergunta que o services.msc nem sabe fazer" +} diff --git a/site/pages/404/page.json b/site/pages/404/page.json index 7ea520ab..b77aa65c 100644 --- a/site/pages/404/page.json +++ b/site/pages/404/page.json @@ -9,6 +9,7 @@ "de": "404", "fr": "404", "es": "404", - "it": "404" + "it": "404", + "pt-br": "404" } } diff --git a/site/pages/404/pt-br.html b/site/pages/404/pt-br.html new file mode 100644 index 00000000..5bf2442a --- /dev/null +++ b/site/pages/404/pt-br.html @@ -0,0 +1,30 @@ + + + + + +
+
+ 404 +

Esta página não está aqui

+

O endereço não corresponde a nada neste site. Nada foi apagado para isso acontecer - aqui os endereços não mudam, porque uma página movida quebraria todo link que já apontou para ela.

+ +
+
+ +
+
+

O que as pessoas costumam procurar

+
+

Download

Dois executáveis autônomos, ou um instalador.

+

Linguagem de consulta

Cada campo e cada valor pelos quais pesquisar.

+

Referência da CLI

Cada opção e cada código de saída.

+

Instantâneos e deriva

O que mudou nesta máquina desde ontem.

+

Perguntas e limites

Inclusive o que a ferramenta recusa por projeto.

+

O código-fonte

Tudo está no GitHub sob a GPL-3.0.

+
+
+
diff --git a/site/pages/audit-windows-services/page.json b/site/pages/audit-windows-services/page.json index a4b16d71..e5aac2a1 100644 --- a/site/pages/audit-windows-services/page.json +++ b/site/pages/audit-windows-services/page.json @@ -10,6 +10,7 @@ "de": "windows-dienste-auditieren", "fr": "auditer-les-services-windows", "es": "auditar-servicios-de-windows", - "it": "audit-dei-servizi-windows" + "it": "audit-dei-servizi-windows", + "pt-br": "auditar-servicos-do-windows" } } diff --git a/site/pages/audit-windows-services/pt-br.html b/site/pages/audit-windows-services/pt-br.html new file mode 100644 index 00000000..1633523b --- /dev/null +++ b/site/pages/audit-windows-services/pt-br.html @@ -0,0 +1,64 @@ + + + + + +
+
+ Guia +

Auditar serviços do Windows

+

Uma auditoria não é uma lista do que há na máquina. É a diferença entre o que há na máquina e o que deveria haver - e nenhum Windows de fábrica registra a segunda metade.

+
+
+ +
+
+

Três perguntas, e o que as responde

+
+
+

O que mudou desde que esta máquina foi construída?

+

Um instantâneo feito na implantação e uma comparação com a máquina esta noite. A configuração é informada à parte do que apenas iniciou ou parou, de modo que o único tipo de inicialização que alguém mudou não fique enterrado sob quarenta serviços que por acaso estão em execução.

+

bws snapshot diff baseline.json --live

+
+
+

Por que a homologação difere da produção?

+

Faça um instantâneo em cada uma e compare os dois arquivos - em qualquer lugar, sem nenhuma das duas máquinas presente. Os arquivos trazem o nome da máquina e a conta que os fez.

+

bws snapshot diff staging.json production.json

+
+
+

O que há aqui que não deveria haver?

+

Consultas que encontram as formas que merecem um olhar: um serviço cujo executável sumiu, um sem assinatura, um em execução embora desabilitado, um que pede direitos de depuração.

+

file:missing, signed:no, mismatch:running

+
+
+
+
+ +
+
+

A forma noturna

+
# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sem deriva de configuração
+#   5 - a configuração se desviou, e drift.json diz o quê
+#   3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+

O código de saída 5 é o que faz disto uma auditoria em vez de um relatório que ninguém lê: a tarefa fica em silêncio até a máquina se desviar, e na noite em que isso acontece, alguém é avisado.

+

Faça a linha de base em uma sessão com privilégios elevados. Sem direitos de administrador o gerenciador lista menos entradas e recusa mais das que lista. O instantâneo registra se a conta que o fez era administradora, de modo que a comparação pode dizer isso em vez de informar como removidas entradas que ninguém removeu - mas uma linha de base sem metade da máquina continua sendo uma linha de base sem metade da máquina.

+
+
+ +
+
+

O que um instantâneo vale como prova

+
    +
  • É JSON com um campo por linha, então cabe em um repositório e o git diff o lê. Um auditor que não tenha esta ferramenta ainda pode ler o arquivo, e um sistema de controle de versão já responde ao quando.
  • +
  • Guarda o que o snap-in nunca mostrou: o caminho de lançamento e os argumentos, o hash e o signatário do arquivo, as dependências nos dois sentidos, os gatilhos, os privilégios exigidos, o tipo de SID e o descritor de segurança.
  • +
  • Diz o que não conseguiu ler. Um campo sobre o qual esta sessão não tinha direitos é registrado como não lido - nunca como vazio - de modo que uma comparação posterior pode dizer not compared em vez de chamá-lo, em silêncio, de inalterado.
  • +
  • É uma descrição da máquina inteira. Arquive-o de acordo: ele é gravado com as permissões que o diretório dele já tem, e a ferramenta não restringe nada.
  • +
+ Como funcionam os instantâneos e as comparações +
+
diff --git a/site/pages/cli-reference/page.json b/site/pages/cli-reference/page.json index a1ee911d..c5689119 100644 --- a/site/pages/cli-reference/page.json +++ b/site/pages/cli-reference/page.json @@ -10,6 +10,7 @@ "de": "cli-referenz", "fr": "reference-cli", "es": "referencia-cli", - "it": "riferimento-cli" + "it": "riferimento-cli", + "pt-br": "referencia-da-cli" } } diff --git a/site/pages/cli-reference/pt-br.html b/site/pages/cli-reference/pt-br.html new file mode 100644 index 00000000..4a0d9fdd --- /dev/null +++ b/site/pages/cli-reference/pt-br.html @@ -0,0 +1,194 @@ + + + + + + + +
+
+ Referência +

Referência da linha de comando

+

Cada comando, cada opção e cada código de saída do bws, versão {{version}}. O bws --help é a fonte autorizada e é mais longo - esta página é a mesma superfície, organizada para ser lida.

+
+
+ +
+
+

Os comandos

+

Onze comandos. O snapshot é um substantivo e recebe uma palavra depois dele. O tool também é, e sozinho lista as ferramentas.

+
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
+bws show NAME [--full] [--follow-network] [--json] [--timing]
+bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
+bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
+bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
+bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
+bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
+bws history [NAME] [--json] [--timing]
+bws tool
+bws tool fix
+bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
+bws license [--components]
+bws --help
+bws --version
+

A um comando digitado errado é oferecido o que você provavelmente quis dizer, e a execução termina com o código 2 em vez de fazer algo parecido com o que você pediu.

+
$ bws lst
+There is no command lst. Did you mean list?
+
+
+ +
+
+

O que cada comando faz

+
+
+

list e show

+

O list é a máquina inteira, restringida por --query. O show é uma entrada com tudo o que se sabe sobre ela - a assinatura, os privilégios, o descritor de segurança e a memória, tudo lido a cada vez, porque em uma só entrada isso custa cerca de sessenta milissegundos, enquanto na máquina inteira custa um segundo. Campos realmente vazios são omitidos, a menos que você passe --full. Um campo que ninguém conseguiu ler é impresso de qualquer jeito, porque omiti-lo pareceria uma resposta.

+
+
+

stop, start e restart

+

Cada um constrói um plano e o executa. --dry-run imprime o plano e não muda nada, --dependents coloca nele os serviços que deixariam de funcionar como etapas próprias, e --timeout diz quanto tempo uma etapa pode ficar sem progresso. Drivers são recusados em vez de tentados, porque parar um driver de kernel muitas vezes não é reversível sem reiniciar.

+
+
+

kill - para um serviço que não para

+

Ele pede ao serviço que pare e encerra o processo por trás dele somente se isso não funcionar, de modo que uma entrada que para sozinha nunca é encerrada. Encerrar um processo leva consigo todos os outros serviços que vivem nele, tenham parado antes ou não, e a pré-visualização os nomeia e nomeia o processo pelo número. --force pula a etapa educada e a pré-visualização mostra então uma etapa em vez de duas. --restart traz tudo de volta depois.

+

O Windows escreve esta ideia de forma diferente. --force no Stop-Service significa "mesmo que algo dependa dele", que é o que o --dependents faz aqui. É por isso que este é um comando próprio e não uma opção do stop.

+
+
+

start-type - uma configuração, não um movimento

+

Diz o que o gerenciador fará com uma entrada na próxima inicialização, e sem --stop não move nada: uma entrada que está em execução continua em execução, uma parada continua parada, e o plano diz isso. disabled é o que merece uma pausa, porque impede o gerenciador de iniciar a entrada, inclusive sob demanda para outra coisa que precise dela. delayed é automático, iniciado um pouco depois das outras entradas automáticas - a palavra que start:delayed pergunta em uma consulta - e o Windows o recusa para uma entrada em um grupo de ordem de carga, o que o plano diz antes de qualquer coisa acontecer. Cada um dos quatro grava se a entrada inicia tarde, como o sc.exe faz. --stop, só ao lado de disabled, para a entrada no mesmo plano depois que a configuração é gravada.

+
+
+

snapshot create e snapshot diff

+

O create sempre lê assinaturas e hashes, porque um instantâneo é guardado e comparado depois, e um sem eles comparado com um que os tem seria tratado como se a máquina tivesse mudado. O diff diz o que mudou indo do primeiro arquivo para o segundo, ou de um arquivo para esta máquina com --live. A página de instantâneos traz o formato e o raciocínio.

+
+
+

history - quem mudou, pelo log do Sistema

+

Mudanças de tipo de inicialização e instalações do log do Sistema, as mais recentes primeiro, com a conta que o Windows registrou. A primeira linha diz até onde o log alcança e se foi limpo, porque um histórico é tão longo quanto o log. Com um nome, são as mudanças de tipo de inicialização daquele serviço - instalações só são listadas sem nome, porque o Windows registra uma instalação sob o nome de exibição e nunca sob o nome do serviço. Uma conta é nomeada onde esta máquina consegue nomeá-la por conta própria e mostrada como SID caso contrário, e os tipos de inicialização vêm nas palavras que o Windows escreveu.

+
+
+

tool - respostas prontas para problemas comuns

+

As mesmas ferramentas que a janela mostra na aba Tools. O bws tool as lista e o bws tool fix lista as correções rápidas: printer, sound, indexing e search, cada uma uma reinicialização de um serviço do Windows junto com o que depende dele, escolhidas porque as próprias páginas de solução de problemas da Microsoft sugerem isso. O bws tool fix printer é exatamente bws restart Spooler --dependents - o mesmo plano, a mesma saída e os mesmos códigos de saída - e, como todo comando aqui que muda algo, não pergunta antes, então --dry-run é o jeito de olhar antes de executar.

+
+
+

license - o que há dentro do arquivo que você baixou

+

Não lê nada - nem gerenciador de serviços, nem disco, nem rede - e responde a partir de um registro compilado no executável. --components transforma o aviso em cada componente com sua versão, sua licença e sua origem. O mesmo conjunto que a lista de materiais publicada ao lado do download traz, porque as duas são geradas de um único registro, e o motivo pelo qual vale a pena: o programa é um arquivo autônomo, então não há nada ao lado dele para um scanner ler.

+
+
+
+
+ +
+
+

Exemplos

+

Os planos abaixo foram conferidos com --dry-run contra o programa que esta página descreve. Um comando que muda algo não pergunta antes, então --dry-run é o jeito de olhar antes de executar. Spooler representa qualquer serviço - coloque no lugar dele o nome do seu.

+
+

Encontrar e ler

+
bws list                                       cada serviço e driver desta máquina
+bws list --query "start:auto !status:running"  o que deveria estar no ar e não está
+bws list --query "status:running" --memory     o que o processo de cada entrada em execução usa
+bws show Spooler                               tudo o que se sabe sobre uma entrada
+bws show Spooler --full                        também os campos realmente vazios
+

Olhar primeiro, mudar depois

+
bws restart Spooler --dry-run                o plano, e nada mais
+bws restart Spooler --dependents             reiniciá-lo junto com o que depende dele
+bws stop Spooler --dependents --timeout 120  permitir dois minutos por etapa sem progresso
+bws start-type WSearch delayed --dry-run     iniciá-lo um pouco depois das outras entradas automáticas
+bws start-type Spooler disabled --stop       desabilitá-lo e pará-lo em um só plano
+

Um serviço que não para

+
bws kill Spooler --dry-run          o processo, e cada serviço que vive nele
+bws kill Spooler --restart          encerrar o processo só se uma parada falhar, depois trazer tudo de volta
+bws kill Spooler --force --dry-run  uma etapa em vez de duas: o processo encerrado na hora
+

Instantâneos e deriva

+
bws snapshot create before.json --note "before the patch"  congelar a máquina, com uma nota guardada dentro
+bws snapshot diff before.json after.json                   dois arquivos - dois dias, ou duas máquinas
+bws snapshot diff before.json --live                       o arquivo contra esta máquina como está agora
+bws snapshot diff before.json --live --exit-code           o mesmo, terminando com 5 se a configuração se desviou
+

Quem mudou

+
bws history          cada mudança de tipo de inicialização e instalação que o log do Sistema guarda
+bws history Spooler  as mudanças de tipo de inicialização de um serviço
+bws history --json   o mesmo como documento, com log e mudanças
+

Correções rápidas

+
bws tool                      as ferramentas que existem
+bws tool fix                  as correções rápidas, e o serviço por trás de cada uma
+bws tool fix sound --dry-run  o plano para reiniciar os dois serviços de áudio
+bws tool fix printer          reiniciar o Spooler de Impressão com o que depende dele
+

O que há dentro do arquivo

+
bws license --components  cada componente, sua versão, sua licença e sua origem
+bws --version             a versão deste executável
+

Em um script do PowerShell

+
# as entradas que deveriam estar no ar e não estão, como objetos
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# os arquivos sem assinatura, para uma planilha
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# de que um serviço precisa
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# uma verificação noturna que se ramifica pelo código de saída
+bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
+switch ($LASTEXITCODE) {
+  0 { 'no configuration drift' }
+  5 { 'the configuration drifted' }
+  default { "no clean answer, exit code $LASTEXITCODE" }
+}
+

No cmd e em um arquivo em lote

+
rem um segundo comando só quando o primeiro não terminou limpo
+bws restart Spooler || echo the restart did not end cleanly
+
+rem em um arquivo em lote com expansão atrasada ligada, o ! precisa de um acento circunflexo
+bws list --query "start:auto ^!status:running"
+
+
+
+ +
+
+

Opções

+

{{switch_count}} no total. A terceira coluna traz os comandos a que cada uma pertence - uma opção passada a um comando que não tem uso para ela é um erro com essa lista dentro, em vez de uma flag ignorada em silêncio.

+ {{table:switches}} +
+
+ +
+
+

Códigos de saída

+

{{exit_code_count}} desfechos, e cada um é uma coisa diferente para um script fazer. Os dados vão para a saída padrão e todo o resto para o erro padrão, de modo que bws list --json | jq funciona e um aviso nunca cai no seu JSON.

+

Todo documento JSON é ASCII puro: uma letra fora dele é escrita como uma sequência de escape de seis caracteres que todo leitor de JSON converte de volta na letra, de modo que bws list --json > file.json é UTF-8 válido e | ConvertFrom-Json o lê direito seja qual for a página de código do console. No texto que uma pessoa lê, um caractere que moveria o terminal em vez de ser impresso - uma tabulação, uma quebra de linha, uma sequência de escape, uma substituição de direção - é mostrado como seu ponto de código, <U+001B>.

+

-- encerra as opções, de modo que um serviço cujo nome começa com um hífen ainda pode ser nomeado: bws show -- -odd. As linhas de comando que a ferramenta entrega a você são escritas para o PowerShell: um nome com espaço vai entre aspas duplas, que o cmd lê do mesmo jeito, e um nome que o PowerShell expandiria dentro delas, como MSSQL$SQLEXPRESS, vai entre aspas simples.

+ {{table:exit-codes}} +

O Ctrl+C tem três níveis, cada um dizendo o que o próximo custa. O primeiro para de avançar e ainda recoloca o que foi tirado, o segundo deixa as coisas como estão e ainda imprime o relatório, o terceiro encerra o processo. Uma execução parada à mão termina com 4 mesmo que cada etapa tenha chegado.

+

Fechar a janela do console conta como o primeiro Ctrl+C. O Windows dá cinco segundos a um programa depois disso, e neles este para de avançar e recoloca o que tinha derrubado. Fazer logoff e desligar o encerram sem nenhum aviso a que ele possa reagir, e uma sessão remota interrompida também pode.

+
+
+ +
+
+

Em uma tarefa agendada

+

A forma para a qual esta ferramenta foi construída: congelar a máquina quando se sabe que está boa, depois perguntar toda noite se ainda está.

+
# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sem deriva de configuração
+#   5 - a configuração se desviou, e drift.json diz o quê
+#   3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+

A janela é a outra metade do mesmo motor: {{archive_window}} a contém, e a página de download diz o que é cada arquivo.

+
+
+ +
+
+

O argumento da janela

+

O BetterWindowsServices.exe aceita um argumento pensado para uma pessoa: --catalogue abre uma folha de desenvolvedor mostrando cada componente da janela em cada estado, e não lê nada da sua máquina. Um segundo, --carry, é como uma janela entrega o que estava mostrando à cópia de si mesma que reinicia como administrador. Ninguém o digita, e tudo nele que aquela janela não poderia ter escrito é recusado.

+
+
diff --git a/site/pages/download/page.json b/site/pages/download/page.json index ebf786fe..156b1f52 100644 --- a/site/pages/download/page.json +++ b/site/pages/download/page.json @@ -10,6 +10,7 @@ "de": "download", "fr": "telechargement", "es": "descarga", - "it": "download" + "it": "download", + "pt-br": "baixar" } } diff --git a/site/pages/download/pt-br.html b/site/pages/download/pt-br.html new file mode 100644 index 00000000..0dbe440e --- /dev/null +++ b/site/pages/download/pt-br.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Download +

Descompacte e execute, ou instale

+

Versão {{version}}. Os arquivos compactados não precisam de instalador e não gravam nada no Registro, e consultar não exige direitos de administrador. Um instalador assinado coloca os dois programas na máquina toda, em vez disso. Livre e gratuito sob a GPL-3.0.

+ +
+
+ +
+
+

O que vem na versão

+
+ + + + + + + +
ArquivoO que é
{{archive_window}}A janela: BetterWindowsServices.exe, um executável autônomo com seu próprio runtime .NET dentro
{{archive_cli}}A linha de comando: bws.exe, um executável autônomo, para scripts, tarefas agendadas e CI
{{archive_installer}}O instalador: os dois programas em Program Files para todas as contas da máquina, a janela no menu Iniciar e o bws no PATH da máquina
+
+

Fique com um ou com os dois - são dois clientes do mesmo motor e nenhum precisa do outro. Em um servidor, a linha de comando é a menor das duas e faz tudo o que a janela faz.

+

O instalador traz exatamente o que os dois arquivos compactados trazem. Ele se instala em modo silencioso com msiexec /i {{archive_installer}} /qn, uma versão mais nova se instala por cima de uma mais antiga, e ele não fecha nada do que está em execução - então feche a janela e qualquer bws em execução antes de atualizar, porque uma cópia deixada aberta pode parar com um erro. Desinstalar em Configurações, Aplicativos remove os programas, a entrada do menu Iniciar e a entrada do PATH, e deixa seus próprios arquivos em paz.

+

Os executáveis levam uma assinatura Authenticode, de modo que o Windows nomeia o editor em vez de avisar sobre um desconhecido.

+
+
+ +
+
+

Requisitos

+
    +
  • Windows 10 versão 1809 ou posterior, ou Windows Server 2019 ou posterior. Somente 64 bits - um processo de 32 bits lê caminhos e chaves do Registro redirecionados, o que daria respostas erradas sem avisar.
  • +
  • Sem .NET para instalar. Os dois executáveis trazem o seu próprio runtime .NET.
  • +
  • Direitos de administrador para mudar qualquer coisa. Ler, pesquisar, instantâneos e comparações funcionam sem eles, com menos entradas visíveis e a ferramenta dizendo isso no topo em vez de fingir que a lista é a máquina inteira.
  • +
+

A janela guarda um arquivo próprio - o layout em que você deixou a lista - em %APPDATA%\BetterWindowsServices. Um instantâneo vai para onde você mandar o bws snapshot create colocá-lo, e para o diretório atual quando você não manda.

+

O programa fala inglês. A janela lê um arquivo de idioma, languages\gui.<código>.json, colocado ao lado dela e escolhido pelo idioma do Windows, sem nenhuma opção. Uma tradução é, portanto, uma contribuição que pode ser acrescentada sem recompilar - o CONTRIBUTING.md diz como.

+
+
+ +
+
+

Antivírus e EDR

+

Esta ferramenta faz o que um administrador faz com serviços, e parte disso é o que o software de segurança vigia.

+

Ela para e inicia serviços, pode encerrar o processo por trás de um deles e lê o descritor de segurança e os privilégios exigidos de cada serviço. Um EDR que sinaliza um processo encerrando o svchost.exe está fazendo o seu trabalho, e uma parada forçada aqui pode parecer exatamente isso.

+

O que ela não faz, para que você possa conferir a afirmação: não injeta nada em nenhum processo, não empacota nem ofusca nada, não instala nenhum serviço nem driver e não deixa nada em execução, e não abre nenhuma conexão de rede. É de código aberto sob a GPL-3.0 e você mesmo pode compilar os dois executáveis.

+

Se a sua política exigir uma exclusão, exclua os dois executáveis por arquivo e não uma pasta. A única coisa que merece o mesmo cuidado que a própria ferramenta é um arquivo de instantâneo: ele descreve a máquina inteira.

+
+
+ +
+
+

Compilar a partir do código-fonte

+

SDK do .NET 10, no Windows.

+
git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+

Alguns testes leem o gerenciador de controle de serviços real da máquina em que rodam e comparam o que esta ferramenta diz com o que o sc.exe diz. São somente leitura. Os executáveis de arquivo único que as versões trazem são estas duas publicações, cada uma um arquivo com o runtime dentro:

+
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+

Eles saem como bws.exe e BetterWindowsServices.exe em bin/Release/.../win-x64/publish/ de cada projeto. Os arquivos .pdb ao lado são símbolos de depuração, e nada precisa deles para executar.

+
+
+ +
+
+

Quanto custa executar

+

Medido em uma máquina com 810 serviços. Os seus números serão diferentes - o número de serviços, o disco e o processador mexem em todos.

+
+

Cerca de um quarto de segundo

para o bws list ler a máquina inteira.

+

Cerca de oito décimos de segundo

do início da janela até a lista estar na tela.

+

Cerca de 100 MB

para a janela - metade disso é o framework de interface de usuário do Windows, antes de qualquer código próprio desta ferramenta rodar.

+

Cerca de 16 MB

para a linha de comando sobre a mesma máquina.

+
+
+
diff --git a/site/pages/faq/page.json b/site/pages/faq/page.json index 73ce1382..9b477d6b 100644 --- a/site/pages/faq/page.json +++ b/site/pages/faq/page.json @@ -11,6 +11,7 @@ "de": "faq", "fr": "faq", "es": "preguntas-frecuentes", - "it": "domande-frequenti" + "it": "domande-frequenti", + "pt-br": "perguntas-frequentes" } } diff --git a/site/pages/faq/pt-br.html b/site/pages/faq/pt-br.html new file mode 100644 index 00000000..198fdbf1 --- /dev/null +++ b/site/pages/faq/pt-br.html @@ -0,0 +1,78 @@ + + + + + +
+
+ Perguntas +

Perguntas e limites

+

Uma ferramenta que deixa de cobrir algo em silêncio é pior do que uma que diz o que não consegue fazer. Os limites também estão nesta página, em dois grupos: o que ela recusa por projeto e o que o Windows faz e esta ferramenta informa como é.

+
+
+ +
+
+
+
+

Em que isto difere do sc.exe, do Get-Service ou do services.msc?

+

O sc query e o Get-Service dizem o que está em execução. O services.msc permite mudar isso, uma linha por vez, sem como fazer uma pergunta e sem registro depois. Esta ferramenta faz a pergunta (start:auto !status:running), mostra o plano antes de agir e guarda um instantâneo que você pode comparar uma semana depois. Onde ela discorda do sc.exe sobre um serviço, isso é um bug - parte do conjunto de testes executa os dois e os compara entrada por entrada. A comparação mais longa está aqui.

+
+
+

Precisa de internet?

+

Nunca. Sem telemetria, sem verificação de atualização, sem relatório de falhas, sem conta, sem cliente de nada. A única vez em que pode tocar uma rede é quando você passa --follow-network: aí ele pode olhar um caminho de lançamento no compartilhamento de outra máquina e deixar o Windows buscar um certificado que esta máquina ainda não tem - desativado por padrão, e a ajuda diz por quê. Os botões GitHub e Donate da janela e a página do menu Help entregam cada um um endereço fixo ao seu navegador quando você os pressiona, e é o seu navegador que se conecta.

+
+
+

Precisa de direitos de administrador?

+

Para olhar, não. Para mudar, sim. Sem eles o gerenciador mostra menos entradas e recusa mais, e as duas metades dizem isso no topo em vez de fingir que a lista é a máquina inteira. A janela oferece Restart as admin. Ela nunca se eleva sozinha.

+
+
+

É gratuito? Posso usar no trabalho?

+

Sim para os dois. GPL-3.0, sem pegadinhas. Um instantâneo que você faz é o seu arquivo.

+
+
+

Vai quebrar o meu servidor?

+

Não por si só. Nada é mudado sem um plano que você viu, drivers são recusados e um plano que derrubaria algo de que a máquina precisa diz isso. Do que ele não pode proteger você é de executar um plano que você não leu. A lista de serviços de que a máquina precisa é uma lista inicial de sete - as duas metades do RPC e o iniciador do DCOM, o gerenciador de contas, o isolamento de chaves, o gerenciador de sessões e o plug and play - e a Área de Trabalho Remota não está nela, então em uma sessão remota, leia o plano.

+
+
+

É um produto da Microsoft?

+

Não. O {{product}} é um projeto de código aberto independente e não é afiliado, endossado nem patrocinado pela Microsoft. Windows é uma marca do grupo de empresas Microsoft.

+
+
+

O programa está no meu idioma?

+

Não - o programa fala inglês, e é por isso que este site é traduzido. A janela lê um arquivo de idioma, languages\gui.<código>.json, colocado ao lado do executável e o escolhe pelo idioma do Windows, sem nenhuma opção, de modo que uma tradução é uma contribuição que pode ser acrescentada sem recompilar o programa. Os nomes dos serviços na lista são o que o seu Windows diz - no idioma em que o seu Windows está configurado.

+
+
+

Por que a janela é escura quando o meu Windows é claro?

+

Ela é escura e continua escura seja qual for a configuração do Windows, inclusive um tema de alto contraste. Isso é verificado e não presumido - ela mantém suas próprias cores e continua legível, e não segue essa configuração.

+
+
+
+
+ +
+
+

Por projeto

+
    +
  • Somente a máquina local. O gerenciamento remoto não está nesta versão. Para comparar duas máquinas, faça um instantâneo em cada uma e compare os dois arquivos.
  • +
  • Somente Windows, somente 64 bits, Windows 10 1809 ou Windows Server 2019 e posteriores.
  • +
  • Operações em drivers são recusadas em vez de tentadas, porque parar um driver de kernel muitas vezes não é reversível sem reiniciar.
  • +
  • A ferramenta não eleva os próprios privilégios. Quando o gerenciador recusa, ela diz isso e termina com o código de saída 3. A janela se oferece para reiniciar como administrador e não faz mais nada a respeito.
  • +
  • A revogação de certificados não é verificada. Seria preciso alcançar a rede, e esta ferramenta nunca faz isso. Então Trusted significa que a cadeia era válida nesta máquina, não que ninguém tenha revogado o certificado desde então.
  • +
  • A janela descompacta parte do framework de interface de usuário do Windows antes de iniciar. Como arquivo único, ela traz algumas bibliotecas nativas que o Windows só consegue carregar do disco. Sem direitos de administrador ela as grava, na primeira inicialização de cada versão, em uma pasta .net sob a pasta temporária da conta e as carrega de lá. Com direitos de administrador ela usa em vez disso ProgramData\BetterWindowsServices na unidade do Windows - uma pasta que ela cria de modo que só administradores possam alterá-la, e que verifica a cada inicialização. Se essa pasta não puder ser criada, ou se outros puderem alterá-la, a janela não inicia e diz qual pasta e o que fazer. Mudar para lá significa que uma janela com privilégios elevados inicia a si mesma uma segunda vez, o que leva uma fração de segundo, e cada versão deixa suas bibliotecas lá (cerca de 8 MB) até alguém apagar a pasta. A linha de comando não traz essas bibliotecas e não descompacta nada.
  • +
  • Uma sessão com privilégios elevados nomeia as configurações do .NET que herda em vez de recusá-las. Um criador de perfil, uma chave de rastreamento ou de despejo, ou uma porta de diagnóstico definida no ambiente não pode ser desligada de dentro de um programa .NET, então com direitos de administrador as duas metades listam as que encontrarem. Os ganchos de inicialização são desligados por completo.
  • +
+
+
+ +
+
+

Coisas que o Windows faz e esta ferramenta informa como são

+
    +
  • Um serviço hospedado dentro do svchost tem um caminho de lançamento que nomeia o host, de modo que o arquivo está lá e quem o assinou dizem ambos menos do que para um serviço com processo próprio.
  • +
  • Um arquivo com assinatura própria e uma entrada de catálogo do Windows pode nomear dois signatários diferentes. O editor mostrado é o de dentro do arquivo - o que continua o mesmo quando se olha o arquivo em outra máquina - e pode diferir do que o PowerShell informa.
  • +
  • Sem direitos de administrador o gerenciador lista menos entradas e recusa mais das que lista. As duas metades dizem isso no topo, e um instantâneo registra, porque comparar um instantâneo com privilégios elevados com outro feito sem direitos informaria, de outro modo, como removidas entradas que ninguém removeu.
  • +
+

Encontrou um problema, ou um serviço que esta ferramenta informa de forma diferente do sc.exe? O rastreador de problemas está aberto, e uma diferença entre os dois é a coisa mais útil que você pode colar nele.

+
+
diff --git a/site/pages/home/page.json b/site/pages/home/page.json index f640eeb2..724fbbd6 100644 --- a/site/pages/home/page.json +++ b/site/pages/home/page.json @@ -10,6 +10,7 @@ "de": "", "fr": "", "es": "", - "it": "" + "it": "", + "pt-br": "" } } diff --git a/site/pages/home/pt-br.html b/site/pages/home/pt-br.html new file mode 100644 index 00000000..af44e0bc --- /dev/null +++ b/site/pages/home/pt-br.html @@ -0,0 +1,200 @@ + + + + + + + +
+
+
+

Pesquise seus serviços do Windows, veja cada mudança antes de executar e descubra o que se desviou desde ontem

+

{{product}} é o services.msc reconstruído para quem administra máquinas Windows - uma janela e uma linha de comando sobre um único motor. Faça uma pergunta à máquina em vez de rolar oitocentas linhas. Veja o que uma mudança fará antes de clicar em qualquer coisa. E o que o services.msc nunca teve: congelar cada serviço em um arquivo e, uma semana depois, perguntar o que mudou.

+ +
    +
  • Livre e gratuito, GPL-3.0
  • +
  • Um único arquivo, ou um instalador
  • +
  • Sem direitos de administrador para consultar
  • +
  • Nunca se conecta à internet
  • +
+
+
+ A janela com cinco entradas selecionadas e o plano para iniciá-las mostrado sobre a lista: cinco etapas, uma nota de que duas delas já estão nesse estado, uma linha bws start para cada entrada e o botão Start 5 entries. +
Entradas selecionadas, um plano mostrado antes de qualquer coisa acontecer e a linha bws que pede exatamente o mesmo. O programa fala inglês - a janela lê um arquivo de idioma colocado ao lado dela, então uma tradução é possível sem recompilar.
+
+
+
+ + +
+
+ Meio minuto com ele +

Como é no uso

+

Uma sessão real, em um Windows instalado em polonês - os nomes de exibição vêm do Windows, então estão no idioma dele. A janela em si fala inglês.

+
+ Quatro entradas selecionadas e o plano para iniciá-las, uma reinicialização forçada do Local Session Manager cujo plano avisa que a máquina não funciona sem ele e pede o nome dele antes de o botão agir, as perguntas iniciais sob a caixa de busca vazia e o Print Spooler encontrado digitando parte do nome e iniciado. +
Quatro entradas selecionadas e o plano para iniciá-las, uma reinicialização forçada que pede o nome de um serviço de que a máquina precisa, as perguntas sob uma caixa de busca vazia e o Print Spooler encontrado digitando e iniciado.
+
+
+
+ A tela inicial: três cartões de números sobre esta máquina - serviços em execução, serviços de início automático que não subiram e serviços de início automático cujo arquivo sumiu - e um botão Show the list. +
Abre com alguns números sobre esta máquina. Cada um é uma pergunta - clique nele e a pergunta vai para a caixa de busca.
+
+
+ A lista de serviços com as três listas acima da caixa de busca, uma caixa de busca vazia, os botões de filtro abertos em linhas para estado, tipo de inicialização, assinatura, divergências e gatilhos, e a lista abaixo. +
Os botões de filtro escrevem na caixa de busca, de modo que o que você clicou é uma consulta que pode ler e editar.
+
+
+
+
+ +
+
+ Por que isto existe +

O services.msc quase não mudou desde o Windows 2000

+

Administradores passam horas por semana nele esbarrando nas mesmas paredes.

+
+
    +
  • Sem busca. A única navegação é saltar para a primeira letra de um nome de exibição.
  • +
  • Sem filtro. Não há como perguntar mostre o que está configurado para iniciar automaticamente e não está em execução.
  • +
  • Uma linha por vez. Reiniciar doze serviços são doze cliques com o botão direito e doze esperas.
  • +
  • "Parando..." para sempre, sem saída além do Gerenciador de Tarefas e de adivinhar o processo.
  • +
  • Sem histórico. Ninguém sabe quem definiu esse tipo de inicialização como Desabilitado, nem quando.
  • +
  • Dados ocultos. O processo, os gatilhos, os privilégios, o descritor de segurança, quem assinou o executável - tudo exige o sc.exe de cabeça, ou o Registro.
  • +
  • Sem paridade na linha de comando. O sc.exe tem uma sintaxe dos anos noventa, e o Get-Service que vem com o Windows, no Windows PowerShell 5.1, não mostra a conta sob a qual um serviço roda, quanto mais a descrição. O PowerShell 7 mostra as duas coisas e se instala separadamente.
  • +
+
+

As outras ferramentas resolvem cada uma uma parte

+

O Process Hacker e o System Informer mostram uma lista rica e podem encerrar um processo à força, mas não têm auditoria nem linha de comando. O sc.exe e o PsService podem fazer tudo e não dizem nada. Os cmdlets *-Service do PowerShell são programáveis e superficiais.

+

Ninguém combina uma lista pesquisável, uma pré-visualização antes de cada mudança e um registro do que mudou ao longo do tempo - e o registro é o motivo para manter esta ferramenta em uma máquina depois da primeira tarde.

+ A comparação completa +
+
+
+
+ +
+
+ O que ele faz +

Uma janela e uma linha de comando sobre um único motor

+
+

Perguntar, em vez de rolar

start:auto !status:running é o que deveria estar no ar e não está. Uma única linguagem, na caixa de busca e em bws list --query, com os campos sugeridos enquanto você digita.

+

Mostrar o plano antes de qualquer coisa acontecer

Cada parada, início, reinício e mudança de tipo de inicialização é pré-visualizado com os serviços que arrasta consigo, e a pré-visualização é o que executa.

+

Dizer o que se desviou e quem mudou

bws snapshot create congela a máquina em um arquivo, e bws snapshot diff diz o que mudou desde então, a configuração à parte do que apenas iniciou ou parou. bws history diz, pelo log do Sistema, quem mudou um tipo de inicialização e quem instalou um serviço. A janela faz as três coisas em Audit....

+

Corrigir um problema comum com um clique

A aba Tools e o bws tool fix reiniciam o serviço por trás de uma impressora que não imprime, de um som que sumiu ou de uma busca travada, junto com o que depende dele, pelo mesmo plano de tudo o mais.

+

Parar um serviço que não para

Pede com educação primeiro e só encerra o processo se isso falhar, nomeando todos os outros serviços que vivem nele.

+

Mostrar o que o services.msc esconde

Quem assinou o executável e se o Windows confia nele, gatilhos, privilégios, o descritor de segurança, o processo e sua memória. Como colunas e como critérios de busca.

+

Avisar quando não conseguiu ler algo

Um campo que não conseguiu ler é informado como não lido, nunca mostrado como vazio. Um instantâneo feito sem direitos de administrador diz isso dentro do próprio arquivo.

+

Encaixar em scripts

--json em cada comando, um código de saída para cada desfecho e 5 quando uma comparação encontra deriva.

+

Rodar de um único arquivo, offline

Descompacte e execute, ou instale para a máquina toda. Sem .NET para instalar, e nunca se conecta à internet. Consultar não exige direitos de administrador. GPL-3.0.

+
+
+
+ +
+
+ O que o services.msc nunca fez +

O que mudou desde ontem

+

Um instantâneo é a máquina inteira em um momento - cada serviço e cada driver, com seu tipo de inicialização, conta, caminho de lançamento, o hash e o signatário do arquivo, as dependências, os gatilhos, os privilégios e o descritor de segurança. É JSON com um campo por linha, então cabe em um repositório e o git diff o lê.

+
+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
    +
  • Configuração e estado de execução são informados separadamente. Dois instantâneos feitos com um dia de intervalo diferem no que por acaso está em execução, e quase nada disso é deriva - o tipo de inicialização que mudou é a linha a ler.
  • +
  • O que não pôde ser comparado é listado, não escondido. Um campo que um instantâneo nunca leu sai como not compared, de modo que uma comparação que diz nada mudou significa que nada mudou no que os dois lados podiam ver.
  • +
  • --exit-code termina com 5 quando a configuração difere, de modo que uma tarefa agendada pode fazer um instantâneo na implantação e avisar alguém na primeira noite em que a máquina se desviar.
  • +
  • Duas máquinas, dois arquivos. Faça um instantâneo no ambiente de homologação e outro em produção, e compare-os em qualquer lugar.
  • +
+
+ Como funcionam os instantâneos e a deriva +
+
+ +
+
+ Nada acontece sem um plano +

A pré-visualização é a execução

+

Toda operação que grava constrói primeiro um plano, e esse mesmo plano é a pré-visualização, a cascata de serviços dependentes, a recusa antes de você clicar em qualquer coisa, a linha de comando que pede o mesmo e o caminho de volta depois.

+
+
$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt  (2 steps)
+  1. stop  vmms      (would break otherwise)
+  2. stop  Winmgmt   (asked for)
+
+Warnings:
+  - Stopping Winmgmt also stops one other entry: vmms
+  - Winmgmt starts automatically, so it will be back after the next restart.
+
    +
  • Execute sem --dry-run e essas são as etapas, nessa ordem, com os mesmos motivos ao lado. Não existe um segundo caminho de código para a execução de verdade.
  • +
  • O que cai junto está no plano. Os serviços que deixariam de funcionar são etapas próprias, e um plano que derrubaria algo de que a máquina precisa diz isso nos avisos.
  • +
  • A recusa vem antes do botão. Um driver, um serviço para o qual o gerenciador não aceita parada, um processo que o sistema protege - recusados quando o plano é construído, com o motivo. A janela deixa o botão cinza e diz o porquê ao lado.
  • +
  • A parada forçada tem duas etapas, e a segunda é condicional. O bws kill pede ao serviço que pare e só encerra o processo se isso não funcionar, nomeando todos os outros serviços que vivem nele.
  • +
+
+ Quando um serviço não para +
+
+ +
+
+ Dois minutos com ele +

Pela linha de comando

+

O mesmo motor da janela, para scripts, tarefas agendadas e CI. Os dados vão para a saída padrão e todo o resto para o erro padrão, de modo que bws list --json | jq funciona e um aviso nunca cai no seu JSON.

+
bws list --query "start:auto !status:running"     o que deveria estar no ar e não está
+bws list --query "file:missing"                   serviços cujo executável sumiu
+bws list --query "signed:no peruser:no"           sem assinatura, sem as cópias por sessão
+bws show Spooler                                  tudo o que se sabe sobre uma entrada
+bws stop Winmgmt --dry-run --dependents           o que pará-lo arrastaria junto
+bws kill Spooler --dry-run                        o que encerrar o processo dele levaria junto
+bws start-type Spooler manual --dry-run           o que tirá-lo do automático faria
+bws snapshot create before.json                   congelar a máquina antes de uma mudança
+bws snapshot diff before.json --live --exit-code  o que mudou desde então, 5 se a configuração mudou
+bws history Spooler                               quem mudou o tipo de inicialização dele, e quando
+bws tool fix printer --dry-run                    o que a correção rápida de uma impressora travada faria
+ Cada comando, opção e código de saída +
+
+ +
+
+ Como obter +

Descompacte e execute, ou instale

+

Windows 10 1809 ou Windows Server 2019 e posteriores, de 64 bits. Os arquivos compactados não precisam de instalador e não gravam nada no Registro, e consultar não exige direitos de administrador. Mudar qualquer coisa exige uma sessão com privilégios elevados, e as duas metades dizem isso em vez de falhar em silêncio - a janela oferece Restart as admin.

+
+ + + + + + + +
ArquivoO que é
{{archive_window}}A janela, um executável autônomo - sem .NET para instalar
{{archive_cli}}A linha de comando, um executável autônomo, para scripts e CI
{{archive_installer}}O instalador: os dois programas para todas as contas da máquina, a janela no menu Iniciar e o bws no PATH
+
+

Os executáveis levam uma assinatura Authenticode, de modo que o Windows nomeia o editor em vez de avisar sobre um desconhecido.

+ +
+
diff --git a/site/pages/query-language/page.json b/site/pages/query-language/page.json index aedeb058..2b50363e 100644 --- a/site/pages/query-language/page.json +++ b/site/pages/query-language/page.json @@ -10,6 +10,7 @@ "de": "abfragesprache", "fr": "langage-de-requete", "es": "lenguaje-de-consulta", - "it": "linguaggio-di-query" + "it": "linguaggio-di-query", + "pt-br": "linguagem-de-consulta" } } diff --git a/site/pages/query-language/pt-br.html b/site/pages/query-language/pt-br.html new file mode 100644 index 00000000..dc3a6753 --- /dev/null +++ b/site/pages/query-language/pt-br.html @@ -0,0 +1,178 @@ + + + + + + + +
+
+ A linguagem de consulta +

Faça uma pergunta à máquina

+

Uma única linguagem, na caixa de busca da janela e em bws list --query. Uma palavra solta pesquisa o nome, o nome de exibição, a conta e o caminho de lançamento. Um campo restringe a busca. {{field_count}} campos, e o mesmo texto significa a mesma coisa nas duas metades da ferramenta.

+
+
+ +
+
+

Seis que respondem a uma pergunta de verdade

+
+

O que deveria estar no ar e não está

start:auto !status:running

A primeira consulta que a maioria das pessoas escreve, e a que o services.msc não consegue responder de jeito nenhum.

+

Serviços cujo arquivo sumiu

file:missing

Uma entrada apontando para um executável que não está no disco. Em geral, uma desinstalação que deixou o registro para trás.

+

Sem assinatura, sem o ruído das sessões

signed:no peruser:no

As famílias por usuário fazem uma cópia por sessão e enchem uma lista de quase duplicatas. Esta pergunta sobre o resto.

+

Em execução embora desabilitado

mismatch:running

Configuração e estado que discordam - uma entrada que o gerenciador está configurado para nunca iniciar, em execução mesmo assim.

+

Qualquer coisa que peça direitos de depuração

privilege:SeDebugPrivilege

Um privilégio que permite a um processo abrir qualquer outro. Vale saber quais serviços o pedem.

+

O que a ferramenta não conseguiu ler

account:?

As entradas cuja conta esta sessão não conseguiu ler. Uma pergunta que o services.msc nem sabe fazer.

+
+
+
+ +
+
+

Como uma consulta é escrita

+
+
+

Termos

+
    +
  • Os termos são separados por espaços e todos precisam corresponder - não existe a palavra-chave and porque ela não poderia significar outra coisa.
  • +
  • O mesmo campo escrito duas vezes é a única exceção: status:running status:stopped significa um ou outro, porque é o que se escreve ao marcar dois filtros. Dois limites em um número continuam restringindo - pid:>1000 pid:<2000 é o intervalo entre eles.
  • +
  • ! na frente de um termo o nega: !status:running. Em um arquivo em lote com setlocal EnableDelayedExpansion, o cmd come esse ! sem dizer nada e a consulta passa a significar outra coisa em silêncio - escreva ^! dentro das aspas ali.
  • +
  • Uma vírgula dentro de um campo é um ou: start:manual,disabled.
  • +
  • Aspas protegem qualquer coisa com espaços ou dois-pontos: account:"NT SERVICE\McmSvc".
  • +
  • Um caminho colado como está - C:\Windows\System32\svchost.exe - é pesquisado, não lido como um campo chamado C.
  • +
+
+
+

Como o texto é comparado

+
    +
  • name:spool corresponde a tudo que o contém - o padrão, porque é o que se espera de uma caixa de busca.
  • +
  • name:=spooler é exato.
  • +
  • name:spool* aceita curingas, * e ?.
  • +
  • name:/^Sql.*/ é uma expressão regular, e dentro das barras é escrita do jeito que as expressões regulares se escrevem: \?, \\ e uma vírgula significam ali o que significam ali. Uma barra que nunca fecha é um erro - para procurar a própria barra, escreva \/ ou use aspas.
  • +
  • Maiúsculas e minúsculas são ignoradas, inclusive fora do ASCII - um nome de exibição em polonês ou em grego corresponde de qualquer jeito que seja digitado.
  • +
+
+
+

Três palavras que todo campo aceita

+ {{list:reserved-words}} +

Um valor digitado errado é um erro, nunca um resultado vazio. status:runing responde Did you mean running? e termina com o código 2. Uma lista vazia pareceria uma resposta, e a diferença entre "nada corresponde" e "você digitou errado" é a diferença entre uma máquina limpa e uma auditoria que não provou nada. Uma consulta que não restringiria nada também é recusada na linha de comando, para que um script não opere sobre a máquina inteira por causa de um erro de digitação.

+
+
+ +
+
+

Mais exemplos

+

Cada um funciona do mesmo jeito na caixa de busca da janela e depois de bws list --query, e cada um foi executado em um Windows de verdade antes de ser escrito aqui. O que ele encontra depende da máquina - e para uma pergunta sobre problemas, uma resposta vazia é a que você quer.

+
+

Estado e tipo de inicialização

+
+ + + + + + + + +
ConsultaO que ela encontra
status:stopPending,startPendingPresos ao parar ou ao iniciar - a espera que o snap-in mostra e que nunca termina.
start:auto status:stopped trigger:noneConfigurados para iniciar automaticamente, parados e sem aguardar um gatilho - a lista curta que vale a pena ler depois de uma reinicialização.
start:delayedAutomático, iniciado um pouco depois das outras entradas automáticas.
start:manual,disabled status:runningEm execução embora nada o inicie na inicialização - algo o pediu, um gatilho o iniciou, ou alguém o fez.
+
+

Contas

+
+ + + + + + + +
ConsultaO que ela encontra
account:localsystem !publisher:microsoftRodando como LocalSystem, a conta mais poderosa, a partir de um arquivo que a Microsoft não assinou. Uma consulta sobre o editor lê as assinaturas por conta própria, então leva alguns segundos.
!account:localsystem,localservice,networkservice type:ownProcess,sharedProcessServiços rodando sob qualquer outra conta - uma virtual, uma gerenciada ou a de uma pessoa.
account:"NT SERVICE"Uma conta virtual própria do serviço. As aspas mantêm as palavras juntas, por causa do espaço.
+
+

Arquivos e assinaturas

+
+ + + + + + + + + + +
ConsultaO que ela encontra
signed:notSigned,untrustedRoot,tamperedSem assinatura, uma cadeia em que o Windows não confia, ou um arquivo alterado depois de assinado.
signed:trusted !publisher:microsoftAssinado, confiável e não pela Microsoft - o software que outras empresas colocaram nesta máquina.
type:driver start:boot,system !signed:trustedDrivers carregados quando o Windows inicia cuja assinatura o Windows não considera confiável. Em uma máquina saudável, nenhum.
!path:C:\Windows type:ownProcessUm serviço com processo próprio cujo arquivo fica fora da pasta do Windows.
path:\AppData\Lançado de dentro do perfil de alguém, o último lugar onde se espera um serviço.
path:\System32\\ type:ownProcessUma barra invertida na frente de um espaço faz o espaço fazer parte da palavra, então um caminho terminado em barra invertida é escrito com duas quando outro termo o segue. No fim da consulta, uma basta.
+
+

Gatilhos e dependências

+
+ + + + + + + + + +
ConsultaO que ela encontra
trigger:device status:stoppedAguardando a chegada de um dispositivo, portanto parados por um motivo.
trigger:networkIniciado quando chega uma solicitação a um ponto de extremidade de rede - uma porta, um pipe nomeado ou uma interface RPC.
trigger:stopEntradas que um gatilho pode parar, não apenas iniciar.
dependson:WinmgmtEntradas que precisam do WMI para rodar.
requiredby:SpoolerTudo de que o Spooler de Impressão precisa para rodar, e do que esses por sua vez precisam.
+
+

Privilégios e processos

+
+ + + + + + + + + + +
ConsultaO que ela encontra
privilege:SeTcbPrivilegePede para agir como parte do sistema operacional.
privilege:SeImpersonatePrivilege !account:localsystemPode agir em nome de um cliente enquanto roda sob uma conta diferente de LocalSystem.
sidtype:unrestrictedCarrega no processo um SID de serviço próprio, de modo que as permissões podem nomeá-lo sozinho. sidtype:restricted pergunta pelos que também têm o processo com gravação restrita.
type:sharedProcess status:runningEm execução dentro de um svchost compartilhado, junto com outros.
memory:>200MBUm processo usando mais de 200 MB. A memória é lida por conta própria quando uma consulta pergunta por ela.
pid:1000-2000Em um processo cujo id está entre 1000 e 2000.
+
+

Nomes e texto

+
+ + + + + + + + + + + +
ConsultaO que ela encontra
spoolUma palavra solta, pesquisada no nome, no nome de exibição, na conta e no caminho de lançamento.
name:=wuauservExatamente este nome, e nada que apenas o contenha.
name:win*Nomes que começam com win, escritos com um curinga.
name:/svc$/Nomes que terminam em svc, escritos como expressão regular.
description:noneNenhuma descrição, o que vale para a maioria dos drivers.
description:?Uma descrição que o Windows não conseguiu entregar, em geral porque aponta para um arquivo de idioma que não existe.
peruser:templateOs modelos por usuário que o Windows copia para cada sessão aberta.
+
+
+
+
+ +
+
+

Cada campo

+

Construída a partir do próprio programa, de modo que esta tabela não pode se afastar do que a ferramenta aceita. Um campo sem lista de valores aceita texto, um número ou um tamanho - a terceira coluna diz qual.

+ {{table:query-fields}} +
+
+ +
+
+

Duas coisas que vale saber

+
+
+

Alguns campos são caros, e pedi-los liga a leitura

+

Assinaturas levam vários segundos em uma máquina inteira e a memória é uma medição e não uma configuração, então nenhuma das duas é lida para uma listagem a menos que seja pedida. Uma consulta que menciona uma delas liga essa leitura por conta própria - você não precisa lembrar de --signatures além de signed:no. Na janela, uma consulta sobre assinaturas diz que a resposta está incompleta até que cheguem, em vez de mostrar uma lista mais curta como se fosse a resposta.

+
+
+

Um resultado julgado com base em algo ilegível diz isso

+

Se entradas foram julgadas com base em um campo que esta sessão não conseguiu ler, o resultado traz uma linha dizendo quantas - porque um resultado assim pode estar sem entradas, ou conter algumas que não pertencem. É a mesma regra que a ferramenta inteira segue: uma leitura malsucedida fica visível na resposta, nunca engolida. Um editor recebe o mesmo tratamento quando só o certificado o afirma: ao lado de qualquer veredito que não seja trusted o nome é mostrado como not verified, e publisher: conta a entrada como incerta em uma linha própria - de modo que !publisher:microsoft mantém um arquivo da Microsoft que alguém alterou depois de assinado.

+
+
+ A referência da linha de comando +
+
diff --git a/site/pages/sc-exe-and-powershell/page.json b/site/pages/sc-exe-and-powershell/page.json index 79f17e21..168988e7 100644 --- a/site/pages/sc-exe-and-powershell/page.json +++ b/site/pages/sc-exe-and-powershell/page.json @@ -10,6 +10,7 @@ "de": "sc-exe-und-powershell", "fr": "sc-exe-et-powershell", "es": "sc-exe-y-powershell", - "it": "sc-exe-e-powershell" + "it": "sc-exe-e-powershell", + "pt-br": "sc-exe-e-powershell" } } diff --git a/site/pages/sc-exe-and-powershell/pt-br.html b/site/pages/sc-exe-and-powershell/pt-br.html new file mode 100644 index 00000000..d877ca5f --- /dev/null +++ b/site/pages/sc-exe-and-powershell/pt-br.html @@ -0,0 +1,97 @@ + + + + + +
+
+ Guia +

sc.exe, Get-Service e isto

+

Os dois já estão na máquina, e os dois continuarão úteis. Esta página trata de onde eles param - e diz com clareza onde ainda são a melhor resposta.

+
+
+ +
+
+

Onde cada um para

+
+
+

sc.exe

+

Ele alcança quase tudo que o gerenciador de controle de serviços sabe, e não diz nada sobre como perguntar. A sintaxe é dos anos noventa - sc config X start= auto, em que o espaço depois do sinal de igual é obrigatório e a sua ausência é uma falha silenciosa em fazer o que você queria.

+

Ele responde sobre uma entrada por vez. Não há filtro, nem saída que um script possa analisar sem escrever um analisador, nem pré-visualização: o sc stop ou funciona ou devolve um número.

+
+
+

Get-Service e os cmdlets *-Service

+

Objetos de verdade, um pipeline e uma visão superficial. No Windows PowerShell 5.1, o que vem com o Windows, o Get-Service não mostra a conta sob a qual um serviço roda nem a descrição dele. O PowerShell 7 mostra as duas coisas, e o caminho de lançamento também, e se instala separadamente.

+

Stop-Service -Force significa "mesmo que algo dependa dele" - ele para os dependentes, e conta depois e não antes.

+
+
+
+
+ +
+
+

As mesmas perguntas, de três jeitos

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PerguntaCom o que há na máquinaAqui
O que deveria estar no ar e não estáGet-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }bws list --query "start:auto !status:running"
Quais serviços têm um executável sem assinaturaLer cada caminho de lançamento, resolvê-lo, chamar Get-AuthenticodeSignature em cada um - um script, não um comandobws list --query "signed:no"
O que pará-lo derrubaria juntosc enumdepend X, depois ler a lista e decidir você mesmobws stop X --dry-run --dependents, que é o plano que executaria
O que mudou desde a semana passadaNada, a menos que você tenha escrito o coletorbws snapshot diff before.json --live
Quem mudou o tipo de inicialização, e quandoGet-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, depois ler a mensagem de cada eventobws history Spooler, cuja primeira linha diz até onde o log alcança
Saída legível por máquinaObjetos do PowerShell, texto do sc.exe--json em cada comando, na saída padrão, com os avisos no erro padrão
+
+

Onde esta ferramenta discorda do sc.exe sobre um serviço, isso é um bug daqui. Parte do conjunto de testes executa os dois contra a máquina em que está e os compara entrada por entrada, e uma diferença entre os dois é a coisa mais útil que você pode colocar em um relato de problema.

+
+
+ +
+
+

Quando continuar usando o que você tem

+
    +
  • Você está em uma máquina que vai mexer uma única vez. Os dois já estão lá e nada precisa passar por uma política.
  • +
  • Você precisa mudar a conta, o caminho de lançamento ou as ações de recuperação. O sc.exe faz as três coisas. Esta ferramenta mostra a conta e o caminho de lançamento e não muda nenhum dos dois, e lê as ações de recuperação só para avisar antes de encerrar um processo.
  • +
  • Você precisa criar ou excluir um serviço. sc create e sc delete. Não aqui, de propósito.
  • +
  • Você já está no meio de um pipeline do PowerShell. O bws list --json volta como objetos pelo ConvertFrom-Json, então entra no pipeline em vez de substituí-lo.
  • +
+
+
+ +
+
+

Juntos, em vez de no lugar

+

A ferramenta que responde o que há de errado com esta máquina e as ferramentas que mudam uma configuração não são a mesma ferramenta. Faça a pergunta aqui, leia o plano aqui e use o que preferir para executá-lo - o plano imprime a linha de comando que pede o mesmo, e essa linha foi feita para ser copiada.

+ +
+
diff --git a/site/pages/services-msc-alternative/page.json b/site/pages/services-msc-alternative/page.json index d87472c4..9569717a 100644 --- a/site/pages/services-msc-alternative/page.json +++ b/site/pages/services-msc-alternative/page.json @@ -10,6 +10,7 @@ "de": "services-msc-alternative", "fr": "alternative-a-services-msc", "es": "alternativa-a-services-msc", - "it": "alternativa-a-services-msc" + "it": "alternativa-a-services-msc", + "pt-br": "alternativa-ao-services-msc" } } diff --git a/site/pages/services-msc-alternative/pt-br.html b/site/pages/services-msc-alternative/pt-br.html new file mode 100644 index 00000000..2e61412d --- /dev/null +++ b/site/pages/services-msc-alternative/pt-br.html @@ -0,0 +1,102 @@ + + + + + +
+
+ Guia +

Uma alternativa ao services.msc

+

O snap-in Serviços quase não mudou desde o Windows 2000. Continua sendo o jeito mais rápido de iniciar um serviço que você já vê na tela, e o mais lento de responder a qualquer pergunta sobre uma máquina.

+
+
+ +
+
+

O que leva as pessoas a procurar outra coisa

+
+
    +
  • Sem busca. A única navegação é digitar uma letra para saltar ao primeiro nome de exibição que começa com ela. Em uma máquina com oitocentas entradas, isso é rolar com passos extras.
  • +
  • Sem filtro. Não há como perguntar o que está configurado para iniciar automaticamente e não está em execução - a única pergunta que encontra uma máquina quebrada.
  • +
  • Uma linha por vez. Reiniciar doze serviços são doze cliques com o botão direito e doze esperas.
  • +
  • "Parando..." sem saída além do Gerenciador de Tarefas e de adivinhar qual svchost encerrar.
  • +
+
    +
  • Sem histórico. Ninguém sabe quem definiu esse tipo de inicialização como Desabilitado, nem quando, nem se já era assim no mês passado.
  • +
  • Dados ocultos. O processo, os gatilhos, os privilégios exigidos, o descritor de segurança, quem assinou o executável - nada disso está no snap-in, e tudo importa quando algo está errado.
  • +
  • As colunas não podem mudar. Nome, descrição, status, tipo de inicialização, fazer logon como. Essa é a lista inteira, e nenhuma pode ser ordenada de modo útil em uma máquina de verdade.
  • +
+
+
+
+ +
+
+

As mesmas três tarefas, nos dois

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Você querNo services.mscAqui
Encontrar o que deveria estar no ar e não estáOrdenar por tipo de inicialização, rolar, ler cada linhastart:auto !status:running
Saber o que uma parada derruba juntoUma caixa de diálogo que nomeia os dependentes depois de você clicar em PararUm plano antes de qualquer coisa acontecer, com cada dependente como etapa e um aviso quando um deles é algo de que a máquina precisa
Saber o que mudou desde a semana passadaNadabws snapshot diff before.json --live
Saber quem mudou um tipo de inicializaçãoNadabws history Spooler, pelo log do Sistema
Reiniciar doze serviçosDoze cliques com o botão direitoSelecionar doze, um plano, uma execução, um relatório
Ver quem assinou o executável de um serviçoNão é mostradoUma coluna, e algo por que pesquisar: signed:no
Automatizar qualquer coisa disso com scriptNão é automatizávelbws, com --json e um código de saída para cada desfecho
+
+
+
+ +
+
+

O que o snap-in ainda faz melhor

+

Duas coisas, e fingir o contrário seria o tipo de afirmação que este projeto não faz.

+
    +
  • Ele já está na máquina. Nada para baixar, nada para fazer passar por uma política de software. Em uma máquina que você vai mexer uma única vez, esse é o argumento todo.
  • +
  • Ele edita as ações de recuperação, a conta e o caminho de lançamento. Esta ferramenta mostra a conta e o caminho de lançamento e não muda nenhum dos dois, e lê as ações de recuperação só para avisar antes de encerrar um processo. Criar, excluir ou redirecionar um serviço também não está aqui.
  • +
+

O que ele não consegue fazer de jeito nenhum é o motivo de isto existir: fazer uma pergunta, mostrar um plano primeiro e dizer o que se desviou.

+
+
+ +
+
+

O que é isto

+

O {{product}} é livre e gratuito sob a GPL-3.0, um arquivo por metade ou um instalador para a máquina inteira, e nunca se conecta à internet. Consultar não exige direitos de administrador - mudar exige, e ele diz isso em vez de falhar em silêncio.

+ +
+
diff --git a/site/pages/snapshots-and-drift/page.json b/site/pages/snapshots-and-drift/page.json index e5e4aafb..5f07a803 100644 --- a/site/pages/snapshots-and-drift/page.json +++ b/site/pages/snapshots-and-drift/page.json @@ -10,6 +10,7 @@ "de": "snapshots-und-drift", "fr": "instantanes-et-derive", "es": "instantaneas-y-deriva", - "it": "snapshot-e-deriva" + "it": "snapshot-e-deriva", + "pt-br": "instantaneos-e-deriva" } } diff --git a/site/pages/snapshots-and-drift/pt-br.html b/site/pages/snapshots-and-drift/pt-br.html new file mode 100644 index 00000000..d615faeb --- /dev/null +++ b/site/pages/snapshots-and-drift/pt-br.html @@ -0,0 +1,65 @@ + + + + + +
+
+ O que o services.msc nunca fez +

Instantâneos e deriva

+

Toda outra ferramenta diz como uma máquina está agora. A pergunta que um administrador realmente tem é o que é diferente de quando funcionava - e nenhum Windows de fábrica a responde.

+
+
+ +
+
+

O que um instantâneo guarda

+

A máquina inteira em um momento: cada serviço e cada driver, com seu tipo de inicialização, conta, caminho de lançamento e argumentos, o hash e o signatário do arquivo que ele executa, suas dependências e o que depende dele, seus gatilhos, seus privilégios exigidos, seu tipo de SID e seu descritor de segurança - mais o nome da máquina, a conta que o fez e se essa conta era administradora.

+
bws snapshot create before.json --note "before the patch"
+

É JSON com um campo por linha. Isso é de propósito: significa que um instantâneo cabe em um repositório e o git diff o lê, de modo que a comparação da própria ferramenta não é a única maneira de olhar um.

+

Arquive-o como o que ele é. Um instantâneo descreve a máquina inteira, até cada caminho de lançamento e cada descritor de segurança. Ele é gravado com as permissões que o diretório dele já tem, e a ferramenta não restringe nada - então um diretório que outras pessoas podem ler é um em que elas podem ler tudo isso.

+
+
+ +
+
+

Depois, perguntar o que é diferente

+
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+  Spooler  Print Spooler
+    startType: Manual -> Automatic
+    status: Stopped -> Running  (running state, not configuration)
+  wlidsvc  Microsoft Account Sign-in Assistant
+    status: Stopped -> Running  (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+
+
    +
  • Configuração e estado de execução são informados separadamente. Dois instantâneos feitos com um dia de intervalo diferem no que por acaso está em execução, e quase nada disso é deriva. Misturada, a única linha que importa - um tipo de inicialização que alguém mudou - fica enterrada sob quarenta que não importam.
  • +
  • O que não pôde ser comparado é listado, não escondido. Um campo que um dos dois instantâneos nunca leu, porque aquela sessão não tinha direitos sobre ele, sai como not compared sob a sua entrada, e o resumo conta essas entradas. Assim, uma comparação que diz nada mudou significa que nada mudou no que os dois lados podiam ver.
  • +
+
    +
  • Um instantâneo com privilégios elevados contra um sem eles mentiria, informando como removidas entradas que ninguém removeu. Cada arquivo registra se a conta que o fez era administradora, e a comparação diz isso.
  • +
  • Dois arquivos, não só um arquivo e esta máquina. Faça um na homologação e outro em produção e compare-os em qualquer lugar - a resposta para por que a homologação difere não precisa de nenhuma das duas máquinas presentes.
  • +
+
+

A janela faz o mesmo em Audit.... Take snapshot... grava o mesmo arquivo, com uma nota se você digitar uma, e Compare with this machine... ou Compare two snapshots... mostra o que mudou no lugar da lista, uma linha por campo, com tudo o que torna a comparação menos que exata dito acima da tabela. Show a restringe às diferenças ou a um campo, e Export... a grava em um arquivo CSV.

+
+
+ +
+
+

O código de saída é o ponto

+

--exit-code termina com 5 quando a configuração difere - uma entrada adicionada ou removida, ou uma configurada de outro jeito. Um serviço que apenas parou ou iniciou sozinho é informado e não conta, e nem as cópias por usuário que o Windows faz para cada sessão aberta, que são deixadas de fora e contadas. Não é uma falha - encontrar deriva é para o que esta ferramenta serve, e encontrá-la não é uma falha - e por isso ele tem um número próprio em vez de tomar emprestado o que significa que algo deu errado.

+
# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+#   0 - sem deriva de configuração
+#   5 - a configuração se desviou, e drift.json diz o quê
+#   3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+

Esse é todo o mecanismo: uma linha de base feita quando se sabia que a máquina estava boa, e uma pergunta feita toda noite. Se na primeira noite ele responder 5, alguém descobre na primeira noite e não na manhã em que algo quebrar.

+ Usar isto para uma auditoria +
+
diff --git a/site/pages/stop-a-service-that-will-not-stop/page.json b/site/pages/stop-a-service-that-will-not-stop/page.json index ee2c2540..4f399a0a 100644 --- a/site/pages/stop-a-service-that-will-not-stop/page.json +++ b/site/pages/stop-a-service-that-will-not-stop/page.json @@ -10,6 +10,7 @@ "de": "windows-dienst-laesst-sich-nicht-beenden", "fr": "service-windows-impossible-a-arreter", "es": "servicio-de-windows-que-no-se-detiene", - "it": "servizio-windows-che-non-si-ferma" + "it": "servizio-windows-che-non-si-ferma", + "pt-br": "servico-do-windows-que-nao-para" } } diff --git a/site/pages/stop-a-service-that-will-not-stop/pt-br.html b/site/pages/stop-a-service-that-will-not-stop/pt-br.html new file mode 100644 index 00000000..ea2dad63 --- /dev/null +++ b/site/pages/stop-a-service-that-will-not-stop/pt-br.html @@ -0,0 +1,68 @@ + + + + + +
+
+ Guia +

Um serviço preso em Parando...

+

O snap-in mostra Parando e nunca sai do lugar. A resposta de sempre é o Gerenciador de Tarefas, um palpite sobre em qual svchost.exe ele vive e Finalizar tarefa - o que encerra também todos os outros serviços daquele processo, sem dizer quais eram.

+
+
+ +
+
+

Por que acontece

+
    +
  • O serviço não está respondendo ao pedido de parada. O Windows pede com educação e espera. Um serviço que travou, ou que espera algo que não vai voltar, nunca responde.
  • +
  • Algo que depende dele ainda está em execução. O gerenciador recusa a parada em vez de quebrar o outro, e o snap-in mostra isso como uma espera.
  • +
  • Ele divide o processo com outros. A maioria dos serviços do Windows vive dentro de um svchost.exe compartilhado. Encerrar esse processo encerra todos eles, que é exatamente o que o Gerenciador de Tarefas faz sem nomeá-los.
  • +
+
+
+ +
+
+

Olhe antes de encerrar qualquer coisa

+

Pergunte o que encerrá-lo levaria junto. Nada acontece até você tirar o --dry-run.

+
$ bws kill Spooler --dry-run
+

A pré-visualização nomeia o processo pelo número, nomeia todos os outros serviços que vivem nele e mostra duas etapas em vez de uma: pedir ao serviço que pare e, somente se isso não funcionar, encerrar o processo. Um serviço que para sozinho nunca é encerrado.

+
+
    +
  • --force pula a etapa educada e encerra o processo na hora. Muda o plano e não a execução dele, de modo que a pré-visualização mostra uma etapa em vez de duas e a diferença fica visível antes de qualquer coisa acontecer.
  • +
  • --restart traz tudo de volta depois que o processo some - a entrada sobre a qual você perguntou e tudo o que dividia o processo dela. Sem ele, a máquina fica com esses serviços parados, e o relatório diz como iniciá-los de novo.
  • +
+
    +
  • A recusa vem antes do botão. Um driver, um processo que o sistema protege, um serviço para o qual o gerenciador não aceita parada - recusados quando o plano é construído, com o motivo, em vez de depois de uma espera de sessenta segundos.
  • +
  • Um aviso quando importa. Se a entrada é daquelas sem as quais a máquina não funciona, o plano diz isso - pará-la derruba a máquina, não só o serviço.
  • +
+
+

Encerrar um processo é a única coisa que esta ferramenta faz que ninguém pode recusar em nome da máquina. É por isso que é um comando próprio, por isso a pré-visualização nomeia todos os serviços que ele leva junto, e por isso a etapa educada vem primeiro, a menos que você diga o contrário.

+
+
+ +
+
+

A ordem mais segura

+
    +
  1. Ver o que é. bws show Spooler - o processo, o que depende dele, do que ele depende e se aceita pedidos de parada.
  2. +
  3. Tentar a parada comum, como plano. bws stop Spooler --dry-run --dependents. Se a resposta for uma recusa, ela diz qual dos três motivos é.
  4. +
  5. Se não parar, olhar o que custa encerrá-lo. bws kill Spooler --dry-run, e ler a lista de serviços que dividem aquele processo.
  6. +
  7. Depois fazer, com um caminho de volta. bws kill Spooler --restart. O relatório termina com o que não funcionou e os comandos que colocam as coisas de volta.
  8. +
+

Os quatro funcionam do mesmo jeito na janela: clique com o botão direito em uma linha, escolha Force stop..., leia o plano, e o botão embaixo tem o nome do que vai fazer.

+
+
+ +
+
+

Por que não usar simplesmente o Gerenciador de Tarefas

+

Porque ele responde a outra pergunta. O Gerenciador de Tarefas conhece processos e este problema é sobre serviços, e os dois não se correspondem um a um.

+

Um svchost.exe compartilhado pode guardar uma dúzia de serviços. O Gerenciador de Tarefas o encerrará sem dizer quais doze, nenhum volta sozinho e nada diz depois o que parou. Um EDR que sinaliza um processo encerrando o svchost.exe está fazendo o seu trabalho, e não consegue distinguir o seu clique de qualquer outro.

+ +
+
diff --git a/site/pages/what-should-be-running/page.json b/site/pages/what-should-be-running/page.json index 5e4b739d..ffd32e0b 100644 --- a/site/pages/what-should-be-running/page.json +++ b/site/pages/what-should-be-running/page.json @@ -10,6 +10,7 @@ "de": "welche-windows-dienste-laufen-sollten", "fr": "quels-services-windows-devraient-tourner", "es": "que-servicios-de-windows-deberian-estar-en-marcha", - "it": "quali-servizi-windows-dovrebbero-essere-attivi" + "it": "quali-servizi-windows-dovrebbero-essere-attivi", + "pt-br": "quais-servicos-do-windows-deveriam-estar-em-execucao" } } diff --git a/site/pages/what-should-be-running/pt-br.html b/site/pages/what-should-be-running/pt-br.html new file mode 100644 index 00000000..4fdbdcf6 --- /dev/null +++ b/site/pages/what-should-be-running/pt-br.html @@ -0,0 +1,86 @@ + + + + + +
+
+ Guia +

Quais serviços deveriam estar em execução?

+

A resposta honesta é que ninguém pode dizer, e que toda lista que afirma poder descreve uma máquina que não é a sua. O que pode ser respondido é mais estreito e muito mais útil: o que não fecha nesta máquina, e o que é diferente de quando ela funcionava.

+
+
+ +
+
+

Por que a pergunta geral não tem resposta

+
    +
  • O conjunto muda com a edição, a versão e a função do Windows. Um controlador de domínio, um notebook e um host de contêineres discordam em quase tudo, e uma lista escrita para um está errada para os outros.
  • +
  • Metade do que está instalado não é do Windows. Drivers, agentes, serviços de atualização, daemons de licença - cada um foi colocado ali por alguma coisa, e nenhuma lista geral sabe por quê.
  • +
  • A maioria dos serviços foi feita para ficar parada. Um Windows moderno inicia uma fração do que registra: o resto espera um gatilho - a chegada de um dispositivo, a abertura de uma porta, a entrada em um domínio - e parado é o estado correto deles.
  • +
  • Listas de "desabilite estes para ganhar desempenho" são o jeito como as máquinas quebram. O serviço que parece ocioso é aquele que outra coisa inicia sob demanda, e a falha aparece uma semana depois em algum lugar sem relação.
  • +
+
+
+ +
+
+

As perguntas que têm resposta

+
+
+

O que deveria estar no ar e não está

+

start:auto !status:running

+

O Windows foi mandado iniciar estes e eles não estão em execução. Em uma máquina saudável é uma lista curta - algumas entradas que iniciam tarde e param de novo. Qualquer outra coisa merece um olhar.

+
+
+

O que está desabilitado e roda mesmo assim

+

mismatch:running

+

Configuração e estado discordam. Em geral alguém o desabilitou sem pará-lo, e a próxima reinicialização será uma surpresa.

+
+
+

O que aponta para um arquivo que sumiu

+

file:missing

+

Uma desinstalação que deixou o registro para trás. Inofensivo até algo tentar iniciá-lo, e uma pista sobre o que havia nesta máquina.

+
+
+

O que ninguém assinou

+

signed:no peruser:no

+

Não prova nada por si só, e é o lugar certo para começar a ler. O segundo termo descarta as famílias por usuário, que de outro modo enchem a lista de quase duplicatas.

+
+
+

O que pede os privilégios mais fortes

+

privilege:SeDebugPrivilege

+

Um privilégio que permite a um processo abrir qualquer outro. Um punhado de serviços legítimos o pede, e vale saber quais na sua máquina.

+
+
+

O que espera um gatilho

+

trigger:any status:stopped

+

Parados porque nada os chamou ainda, e não porque algo está errado. Saber quais são é o que faz a primeira lista deixar de assustar.

+
+
+
+
+ +
+
+

A que vence todas

+

Pergunte à própria máquina, de quando ela funcionava.

+

Faça um instantâneo no dia em que a máquina entra em serviço. Aí isto deveria estar em execução vira isto estava em execução quando tudo funcionava - uma pergunta sobre a sua máquina e não sobre uma máquina de um artigo.

+
bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... uma semana, um patch ou um incidente depois
+bws snapshot diff C:\baselines\web01.json --live
+

A configuração é informada à parte do estado de execução, de modo que a resposta não são quarenta serviços que por acaso estão no ar - é o tipo de inicialização que alguém mudou.

+ Auditar a deriva de uma máquina +
+
+ +
+
+

Antes de parar qualquer coisa

+

Toda parada nesta ferramenta mostra primeiro o seu plano: as etapas, o que cai junto com elas e um aviso quando uma delas é algo sem o qual a máquina não funciona. A lista desses é uma lista inicial de sete - as duas metades do RPC e o iniciador do DCOM, o gerenciador de contas, o isolamento de chaves, o gerenciador de sessões e o plug and play - e a Área de Trabalho Remota não está nela, então em uma sessão remota, leia o plano.

+ +
+
diff --git a/site/site.json b/site/site.json index 3047cca7..6e9e7f48 100644 --- a/site/site.json +++ b/site/site.json @@ -7,7 +7,7 @@ "support": "https://donislawdev.com/support/", "_languages": "The languages that are PUBLISHED, in the order the switch lists them. The first is the default and lives at the root. The others live under /{code}/. A language that is in language_registry and not here is prepared and unreachable, which is how it is written and built before it goes live.", - "languages": ["en", "de", "es", "fr", "it", "pl"], + "languages": ["en", "de", "es", "fr", "it", "pl", "pt-br"], "_language_registry": "How each language is written, in one place. The key is the address code in lower case and the name of its files (site/i18n/{code}.json, site/pages/{id}/{code}.html). tag is what lang and hreflang carry, locale is og:locale, name is the language in its OWN alphabet and is never translated, short is what the switch shows for the language you are in. dir is written only when it is rtl. slugs is own when the language has a slug of its own for every page in each page.json, and english when its pages live at the default language's slugs - the choice for alphabets that cannot be an ASCII address without being transliterated.", "language_registry": {