Laden...
D
DESoft myCSharp.de - Member
Systemverwalter Magdeburg Dabei seit 27.03.2010 14 Beiträge
Benutzerbeschreibung

Forenbeiträge von DESoft Ingesamt 14 Beiträge

23.01.2016 - 20:27 Uhr

Du solltest in der Equals-Prozedur aber das Argument medium mit this prüfen/vergleichen.
Ich sehe nur (Medium)obj .

Gruß Dani

11.02.2013 - 15:54 Uhr

Bitte schön und viel Glück.

TIPP: Besuch mal das Forum in www.wsus.de.

Gruß Dani

11.02.2013 - 15:45 Uhr

Gut, eingangs hatte ich von mehreren Bedingungen gesprochen.
Eine weitere ist das installierte WSUS-API.
Das wird bei der Installation eines WSUS-Servers in das System eingebracht.
Auf einem Client (Win7 etc) kommt es nur durch die Installation der WSUS-Konsole.
Du musst Dich also auch darum kümmern, dass das WSUS-API auf die Clients kommt. Sonst fehlen Dir die Komponenten für Dein Programm. Das WSUS-API ist nicht Bestandteil des DOT.NET.

Gruß Dani

11.02.2013 - 15:35 Uhr

Also beabsichtigst Du das Programm direkt auf dem WSUS laufen zu lassen?
Das hörte sich in deinem ersten Beitrag etwas anders an.
Als Domänenadmin hast Du natürlich volle Zugriffsrechte.
GetUpdateServer sieht keine abweichende Autentifizierung vor.
D.h. der Benutzerkontext, in dem der IUpdateServer erzeugt wird, muss die entsprechenden Rechte auf dem WSUS-Server haben.

Gruß Dani

11.02.2013 - 15:24 Uhr

Bist Du sicher, dass der Client auch diese Berechtigung hat?
Die lokale Berechtigung als Administrator oder Hauptbenutzer ist nicht ausreichend.
Ich rede von einer Gruppenmitgliedschaft auf dem WSUS-Server.

Gruß Dani

11.02.2013 - 15:16 Uhr

Hallo Partywelt,

Ja, es ist möglich diese Information aus dem WSUS zu ermitteln. Dafür gibt es das WSUS-API. Leider sind einige Bedingungen notwendig. Du benötigst mindestens die Berechtigung als Berichterstatter. Für einen Client ist das eine mächtige Befugnis, die so nicht vorgesehen ist.
Besser wäre, wenn Du in der Registry den Zeitwert entnimmst.

Siehe hier:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\Results\Detect
Value:
LastSuccessTime

Gruß Dani

07.11.2012 - 00:00 Uhr

Hallo,

also, ob der Begriff Sicherheit hier noch zutrifft, lasse ich mal offen.

Ich denke nicht, dass Du so ohne weiteres die Passworteingabe im Windows abfangen kannst.

Aber Du kannst den Benutzern ein eigenes Passwort-Verwaltungssystem bereitstellen.
Mittels RSA kannst Du eine Public-Key-Verschlüsselung definieren.
Den Privaten Schlüssel zur Entschlüsselung behält eine Anwendung zum Visualisieren durch die IT-Truppe für den Zugriff beim Support und eine weitere Anwendung zur automatisierten Festsetzung im Änderungsfall (scheduled Task z.B. Jahreswechsel).
Den öffentlichen Schlüssel benutzt ein Eingabeprogramm zur Verschlüsselung eines neuen Wunschpasswortes, das auf allen Rechner bereitgestellt wird.
Da Ihr ein ADDS habt, wäre die Hinterlegung der neuen verschlüsselten Passworte dort am sinnvollsten.
Dazu empfehle ich den Container CN=ProgramData. Hier können Untercontainer für eigene Zwecke (<Firma> => Passworte => <Jahr>) eingerichtet und einen entsprechenden schreibenden Zugriff für die Domänen-Benutzer gewährt werden.
Für die Speicherung sollten Objekte vom Typ msDS-AppData ausreichen. In den Attributen msDS-ByteArray (hier verschlüsseltes Passwort) und msDS-DateTime (Datum der Festlegung) können die Informationen geparkt werden.
Der Objektname sollte eineindeutig sein, hier liegt die Verwendung der Benutzer-SID nahe. Diese kann das Eingabeprogramm direkt bei der Ausführung ermitteln. So ist auch eine Unempfindlichkeit gegen Namensänderungen (UserSAM, Accountname, UPN, Objektname) sicher gestellt.
Theoretisch kann der Benutzer auch im laufenden Jahr das Passwort anpassen "lassen" ... weil ein böser Kollege (von der IT) das aktuelle Passwort bei der Eingabe am Rechner ausgespäht hat. (Kopfschüttel)

Je länger ich darüber nachdenke ... sage ich lieber nicht, was ich mit dem DatensicherheitsEXperten machen würde.

Gruß Dani

23.07.2012 - 01:33 Uhr

Hallo zusammen,

habe ich gerade gesehen ... der vierte Mega Tower wurde in unserer Stadt errichtet.

Gruß Dani

24.10.2011 - 21:43 Uhr

Hi boon,

setz doch auf beide Server einen simplen TCP-Server als Dienst, die Dir auf Anfrage den Servernamen zurückliefern. Ggf. die Anfrage auch auf die IP "Produktivsystem" beschränken.
DNS kann Dir da nicht helfen. Es liefert Dir was eingetragen ist.

Gruß Dani

02.10.2011 - 18:06 Uhr

Hallo nicky,

ich bin zwar nicht besonders fit in SQL, aber ein DISTINC bezieht sich immer auf alle Ergebnisspalten einer SELECT-Anweisung.
Darum folgt es auch direkt dem SELECT-Befehl und ist nicht einer Ergänzung wie z.Bsp. ORDERBY.

Gruß Dani

10.09.2011 - 11:22 Uhr

Herzlichen Glückwunsch und vielen Dank für die interessanten Beiträge. Sie haben maches Licht ins Duckel gebracht. Mach bitte weiter so. 👍

Gruß Dani

06.09.2011 - 23:10 Uhr

Nein, ich habe keine Firma, aber der Nickname ist ein Überbleibsel von echten §-Reitern (hier: §§§). 😁

Als Team haben wir Software für eine Behörde programmiert. Gemäß Windowskonvention Firma-Produkt-Version wurde deren Abkürzung einheitlich in Registry, AD-DS oder Filesystem verwendet.

Und dann kam was kommen musste. Die Behörde wurde mehrfach umstrukturiert und wechselte innerhalb immer kürzerer Zeiträume den Namen und die Abkürzung. 8o

Das war nicht weiter schlimm. Bis die §§§ einforderten, dass uralte Software ohne inhaltlichen Mehrwert angepasst werden muß, da Zitat: "... es sich hierbei um die unberechtigte Verwendung einer Bezeichnung für eine nicht mehr existierende Institution des Dienstherren handelt."

Und das ohne die Quellen noch verfügbar zu haben oder wirksam benutzen zu können. X(

Daraufhin einigten sich die Programmierer auf einen Firmen-Alias aus den Initialen des Primärprogrammierers und dem Suffix "Soft" für Software. Damit konnten die §§§ nix anfangen und lerntes es zu dulden. 😜

Den Nickname DESoft nutze ich noch heute, auch im INet. Zum Bsp. bin ich bei WSUS.DE recht aktiv. 👍

Ich bin immer bestrebt, für das Nehmen auch einen entsprechenden Beitrag zu geben. In diesem Forum fällt mir das aber sehr schwer, da die anderen Teilnehmer auf Grund Ihrer Erfahrungen zu schnell und professionell sind. 🙁

Naja ... jetzt bin ich mal zu lernen dran, mein schlechtes Gewissen geduldig zu ertragen. 😁

Ein echt tolles Forum. 👍

Gruß Dani

PS: Meine Bitte an alle Hilfe Suchenden und Findenden:
Ein Klick in "Unsere MiniCity" ist eine kleine Geste des Respekts und Dankes.
Danke. Klick ... Einwohner: 19291

20.08.2011 - 10:53 Uhr

Hi Cat,

auf die Variable kann man sogar verzichten, da man ... einfach aus der Schleife springen kann, sobald man ein nicht-leeres Verzeichnis gefunden hat.
Außerdem würde ich die Abfrage auf die Dateien zuerst durchführen, damit man nicht erst die Unterordner iterieren muss.

Wenn du bei der erstbesten Gelegenheit herausspringst, hast du aber nicht untersucht, ob es noch "leere" Verzeichnisse in der tieferen Struktur gibt. Dann dürfte das Listing aber nur sehr kurz und unvollständig sein.

Gruß Dani

20.08.2011 - 01:12 Uhr

Hallo MrFluffy,

du rufst ja die Procedure rekursiv auf, um von einer Verzeichniswurzel in die Tiefe zu gehen. Was fehlt ist die Rückmeldung ob eine Datei gefunden wurde, so dass du für das Parentverzeichnis abschließend entscheiden kannst, ob es in Liste der "leeren Verzeichnisse" mit aufgenommen werden kann.
Zudem sollte immer - also unabhängig vor der Existenz von Subdirs - geprüft werden, ob eine Datei vorliegt.

Folgende Möglichkeiten bestehen:

  1. Du überwachst, ob der Liste ein Element hinzugefügt wurde,
  2. Du ergänzt die Argumentliste um ein boolesches out-Element FileFound
  3. Du machst aus der void eine Funktion, die ein Bool zurückgibt.

Hier mal Ansatz Nr. 3:


public bool traverseDirsAndRemoveEmpty(DirectoryInfo dinfo, List<Dir> dirList)
        {
            bool FileFound = false;
            if (dinfo.GetDirectories().Length > 0)
            {
                foreach (DirectoryInfo dSubInfo in dinfo.GetDirectories())
                {
                    FileFound = FileFound | traverseDirsAndRemoveEmpty(dSubInfo, dirList);
                }
            }
            if (!FileFound)
            {
                if (dinfo.GetFiles().Length == 0)
                {
                    Dir dir = new Dir();
                    dir.Dir_fullname = dinfo.FullName;
                    dir.Dir_name = dinfo.Name;
                    dirList.Add(dir);
                    return false;
                }

            } 
            return true;
        }

Nicht getestet!

Gruß Dani