Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Windows Tresor per GPO leeren?

Mitglied: xbast1x

xbast1x (Level 2) - Jetzt verbinden

19.10.2016 um 08:34 Uhr, 2716 Aufrufe, 15 Kommentare, 1 Danke

Hallo zusammen,

bei uns tritt häufig das Problem auf, dass veraltete Anmeldeinformationen (Outlook) im Tresor vorhanden sind und es dadurch zu Authentifizierungsproblemen kommt. Die Lösung ist den Tresor zu leeren und Outlook erneut zu starten.

Gibt es eine Möglichkeit das ganze zeitabhängig per Skript oder geplanten Task laufen zu lassen?

Gruß xbast1x
Mitglied: emeriks
19.10.2016 um 08:55 Uhr
Hi,
Die Lösung ist den Tresor zu leeren
Wie? Mit CMDKEY ?

Gibt es eine Möglichkeit das ganze zeitabhängig per Skript oder geplanten Task laufen zu lassen?
Ja, als Benutzer-Anmeldescript per GPO.
Oder per GPO pro User einen Scheduled Task einrichten.

E.
Bitte warten ..
Mitglied: xbast1x
19.10.2016 um 11:02 Uhr
Momentan mache ich es händisch wenn das Problem auftritt.

Bezüglich Skript habe ich leider keine Ahnung wie ich das ganze realisieren soll. Hast du eine Syntax? Ich habe bei meinen Recherchen leider nichts gefunden..
Bitte warten ..
Mitglied: emeriks
LÖSUNG 19.10.2016 um 11:10 Uhr
Momentan mache ich es händisch wenn das Problem auftritt.
Mit Löschpapier?

Bezüglich Skript habe ich leider keine Ahnung wie ich das ganze realisieren soll. Hast du eine Syntax? Ich habe bei meinen Recherchen leider nichts gefunden..
Das glaube ich nicht.
GPO Logon Script
Scheduled Task
CMDKEY Syntax
Batch File
Bitte warten ..
Mitglied: 131223
LÖSUNG 19.10.2016, aktualisiert um 11:16 Uhr
CMD
01.
for /f "tokens=1,* delims=: " %%a in ('cmdkey /list ^| findstr /i "Ziel:"') do @cmdkey /delete:"%%b"
Powershell
01.
cmdkey /list | ?{$_ -match 'Ziel: (.*)'} | %{cmdkey /delete:"$($matches[1])"}
Bitte warten ..
Mitglied: xbast1x
19.10.2016 um 11:22 Uhr
Danke euch beiden. Das Stichwort was mir gefehlt hat war CMDKey.

Merci
Bitte warten ..
Mitglied: 131223
19.10.2016, aktualisiert um 11:30 Uhr
Zitat von xbast1x:
Danke euch beiden. Das Stichwort was mir gefehlt hat war CMDKey.
Tomaten auf den Augen.

Wie? Mit CMDKEY ?
Bitte warten ..
Mitglied: colinardo
19.10.2016, aktualisiert um 17:53 Uhr
Oder wenn man cmdkey nicht nutzen will oder kann, warum auch immer, so gehts auch per ADVAPI mit etwas C# als Powershell um alle Credentials im Store zu löschen:
01.
$code = @"
02.
using System;
03.
using System.Collections.Generic;
04.
using System.ComponentModel;
05.
using System.Text;
06.
using System.Threading.Tasks;
07.
using System.Runtime.InteropServices;
08.

09.
public static class CredentialManager
10.
{
11.
    public static Credential ReadCredential(string applicationName, CredentialType credType)
12.
    {
13.
        IntPtr nCredPtr;
14.
        bool read = CredRead(applicationName, credType, 0, out nCredPtr);
15.
        if (read)
16.
        {
17.
                CREDENTIAL cred = (CREDENTIAL)Marshal.PtrToStructure(nCredPtr, typeof(CREDENTIAL));
18.
                return ReadCredential(cred);
19.
        }
20.

21.
        return null;
22.
    }
23.

24.
    private static Credential ReadCredential(CREDENTIAL credential)
25.
    {
26.
        string applicationName = Marshal.PtrToStringUni(credential.TargetName);
27.
        string userName = Marshal.PtrToStringUni(credential.UserName);
28.
        string secret = null;
29.
        if (credential.CredentialBlob != IntPtr.Zero)
30.
        {
31.
            secret = Marshal.PtrToStringUni(credential.CredentialBlob, (int)credential.CredentialBlobSize / 2);
32.
        }
33.

34.
        return new Credential(credential.Type, applicationName, userName, secret);
35.
    }
36.

37.
   
38.
    public static IReadOnlyList<Credential> EnumerateCredentials()
39.
    {
40.
        List<Credential> result = new List<Credential>();
41.

42.
        int count;
43.
        IntPtr pCredentials;
44.
        bool ret = CredEnumerate(null, 0, out count, out pCredentials);
45.
        if (count > 0) { 
46.
            if (ret)
47.
            {
48.
                for (int n = 0; n < count; n++)
49.
                {
50.
                    IntPtr credential = Marshal.ReadIntPtr(pCredentials, n * Marshal.SizeOf(typeof(IntPtr)));
51.
                    result.Add(ReadCredential((CREDENTIAL)Marshal.PtrToStructure(credential, typeof(CREDENTIAL))));
52.
                }
53.
            }
54.
            else
55.
            {
56.
                int lastError = Marshal.GetLastWin32Error();
57.
                throw new Win32Exception(lastError);
58.
            }
59.
            return result;
60.
        }
61.
        return result;
62.
    }
63.

64.
    public static bool DeleteCredential(string Applicationname,CredentialType credType)
65.
    {
66.
        Credential cred = ReadCredential(Applicationname, credType);
67.
        if (cred != null)
68.
        {
69.
            bool result = CredDelete(cred.ApplicationName, cred.CredentialType, 0);
70.
            if (!result)
71.
            {
72.
                int lastError = Marshal.GetLastWin32Error();
73.
                throw new Win32Exception(lastError);
74.
            }
75.
            return result;
76.
        }
77.
        else
78.
        {
79.
            throw new Exception();
80.
        }
81.
    }
82.
    
83.
    public static void DeleteAllCredentials() {
84.
        IReadOnlyList<Credential> all = EnumerateCredentials();
85.
        if (all.Count > 0) {
86.
            foreach (Credential cred in all) {
87.
                DeleteCredential(cred.ApplicationName, cred.CredentialType);
88.
            }
89.
        }
90.
    }
91.

92.
    [DllImport("Advapi32.dll", EntryPoint = "CredReadW", CharSet = CharSet.Unicode, SetLastError = true)]
93.
    static extern bool CredRead(string target, CredentialType type, int reservedFlag, out IntPtr credentialPtr);
94.

95.
    [DllImport("advapi32", SetLastError = true, CharSet = CharSet.Unicode)]
96.
    static extern bool CredEnumerate(string filter, int flag, out int count, out IntPtr pCredentials);
97.

98.
    [DllImport("Advapi32.dll", EntryPoint = "CredFree", SetLastError = true)]
99.
    static extern bool CredFree([In] IntPtr cred);
100.

101.
    [DllImport("advapi32.dll", EntryPoint = "CredDeleteW", CharSet = CharSet.Unicode, SetLastError = true)]
102.
    private static extern bool CredDelete(string target, CredentialType type, int flags);
103.

104.

105.
    private enum CredentialPersistence : uint
106.
    {
107.
        Session = 1,
108.
        LocalMachine,
109.
        Enterprise
110.
    }
111.

112.
    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
113.
    private struct CREDENTIAL
114.
    {
115.
        public uint Flags;
116.
        public CredentialType Type;
117.
        public IntPtr TargetName;
118.
        public IntPtr Comment;
119.
        public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
120.
        public uint CredentialBlobSize;
121.
        public IntPtr CredentialBlob;
122.
        public uint Persist;
123.
        public uint AttributeCount;
124.
        public IntPtr Attributes;
125.
        public IntPtr TargetAlias;
126.
        public IntPtr UserName;
127.
    }
128.
}
129.

130.
public enum CredentialType
131.
{
132.
    Generic = 1,
133.
    DomainPassword,
134.
    DomainCertificate,
135.
    DomainVisiblePassword,
136.
    GenericCertificate,
137.
    DomainExtended,
138.
    Maximum,
139.
    MaximumEx = Maximum + 1000,
140.
}
141.

142.
public class Credential
143.
{
144.
    private readonly string _applicationName;
145.
    private readonly string _userName;
146.
    private readonly string _password;
147.
    private readonly CredentialType _credentialType;
148.

149.
    public CredentialType CredentialType
150.
    {
151.
        get { return _credentialType; }
152.
    }
153.

154.
    public string ApplicationName
155.
    {
156.
        get { return _applicationName; }
157.
    }
158.

159.
    public string UserName
160.
    {
161.
        get { return _userName; }
162.
    }
163.

164.
    public string Password
165.
    {
166.
        get { return _password; }
167.
    }
168.

169.
    public Credential(CredentialType credentialType, string applicationName, string userName, string password)
170.
    {
171.
        _applicationName = applicationName;
172.
        _userName = userName;
173.
        _password = password;
174.
        _credentialType = credentialType;
175.
    }
176.

177.
    public override string ToString()
178.
    {
179.
        return string.Format("CredentialType: {0}, ApplicationName: {1}, UserName: {2}, Password: {3}", CredentialType, ApplicationName, UserName, Password);
180.
    }
181.
}
182.

183.
"@
184.
Add-Type -TypeDefinition $code
185.
[CredentialManager]::DeleteAllCredentials()
Falls es jemand gebrauchen kann.

Grüße Uwe

p.s. Code ist etwas länger da er auch noch mehr kann als nur den Store komplett zu leeren
Bitte warten ..
Mitglied: xbast1x
20.10.2016 um 14:30 Uhr
Noch eine Frage:

Per Logonskript leert er den Tresor nicht. Ich vermute, da noch andere Logonskripts laufen (ich habe testweise die Batch für den Tresor an die oberste Stelle der Reihenfolge verschoben)

Per Aufgabenplanung funktioniert es wunderbar, jedoch muss ich auch hier 30 Sekunden Delay einbauen. Ich würde gern das DOS Fenster welches erscheint unterdrücken doch bekomme es so nicht hin. Das Argument /min bzw. direkt vor dem Pfad der Batch Datei "start /min" "Pfad zur Batch" funktioniert auch nicht.

Gibt es eine Möglichkeit ohne VBS Skript ein DOS Fenster nicht sichtbar durch die Aufgabenplanung starten zu lassen?
Bitte warten ..
Mitglied: emeriks
20.10.2016, aktualisiert um 14:35 Uhr
Gibt es eine Möglichkeit ohne VBS Skript ein DOS Fenster nicht sichtbar durch die Aufgabenplanung starten zu lassen?
Ja. Aber nur wenn man es "unabhängig von der Anmeldung" (o.ä.) einrichtet, also am Task das Passwort hinterlegt. Und das kann man per GPO/GPP nicht.
Edit: Oder per Powershell-Einzeiler.

Per Logonskript leert er den Tresor nicht. Ich vermute, da noch andere Logonskripts laufen
Andere Scripte sind da irrelevant. Stell mal per GPO ein, dass die Loginscripte sichtbar laufen sollen und lass die Batch mit "pause" am Ende wartet. Dann kannst Du sehen, ob und was er macht bzw. warum nicht.
Bitte warten ..
Mitglied: xbast1x
20.10.2016 um 15:09 Uhr
GPO Einstellungen + Skript habe ich angepasst. Ich sehe kein CMD Fenster.


Wie würde das ganz per Powershell aussehen. Wäre das Atribut dann "-windowstyle hidden" ?
cmdkey /list | ?{$_ -match 'Ziel: (.*)'} | %{cmdkey /delete:"$($matches[1])"}

Gruß
Bitte warten ..
Mitglied: emeriks
20.10.2016 um 15:23 Uhr
Powershell --> Da wäre @colinardo ne gute Adresse ...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 20.10.2016, aktualisiert um 15:31 Uhr
-windowstyle hidden
Ja

Aber GPO-Logon-Scripts werden doch schon unsichtbar ausgeführt ??!
http://www.gruppenrichtlinien.de/artikel/anmelde-skripte/

Man kann das PS Fenster aber auch aus dem Skript selber heraus ohne diesen Parameter verstecken:
01.
$showWindowAsync = Add-Type –memberDefinition @" 
02.
[DllImport("user32.dll")] 
03.
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); 
04.
"@ -name "Win32ShowWindowAsync" -namespace Win32Functions –passThru
05.
[void]$showWindowAsync::ShowWindowAsync((Get-Process –id $pid).MainWindowHandle, 0) 
06.

07.
# und hier der Rest
Bitte warten ..
Mitglied: xbast1x
21.10.2016 um 08:23 Uhr
Vielen Dank colinardo.

Skript funktioniert super (lokal getestet). Ich muss nur unter der GPO sagen, dass Powershell Skripte erlaubt sind. Ich habe jedoch folgenden Eintrag nicht "Policies\Administrative Templates\Windows Components\Windows PowerShell."

Die PowerShellExecutionPolicy.admx dafür ist vorhanden und liegt auch im %systemroot%/PolicyDefinitions, wird aber im GPO Editor nicht angezeigt.
Bitte warten ..
Mitglied: emeriks
21.10.2016 um 08:33 Uhr
Die PowerShellExecutionPolicy.admx dafür ist vorhanden und liegt auch im %systemroot%/PolicyDefinitions, wird aber im GPO Editor nicht angezeigt.
Habt Ihr einen Central Store eingerichtet? Falls ja, dann muss die ADMX dort rein.

E.
Bitte warten ..
Mitglied: xbast1x
21.10.2016 um 08:44 Uhr
Danke emeriks. Nun passt es.
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk

Windows-Tresor leer nach Ablauf der Passworte

Frage von DelPieroWindows Netzwerk1 Kommentar

Hallo zusammen Ich hatte vor Kurzem ein ziemlich schräges Problem, welches ich so noch nie gesehen habe. Umgebung: Win2012R2-Server ...

Server-Hardware

Server Tresor

Frage von ahussainServer-Hardware33 Kommentare

Hallo, ich muss für ein geplantes Projekt einen Tower Server, auf dem sich sensible Daten befinden, absichern. Wichtig ist ...

Windows 7

Windows 7 Tresor Anmeldespeicherung ist deaktiviert

gelöst Frage von TecFrekWindows 72 Kommentare

Servus Leute, ich habe ein kleines Problem mit Windows 7 Pro. Vor Kurzem hat sich mein Netzlaufwerk zu meinem ...

Windows Server

Windows-Tresor Anmeldeinformationsverwaltung über Gruppenrichtlinien verteilen

gelöst Frage von onkel87Windows Server2 Kommentare

Hallo Admins, wir nutzen je Arbeitsplatz eine Standard Anmeldeinformationsliste z.B. für Outlookzugriffe etc. - dieser Windows-Tresor kann man exportieren ...

Neue Wissensbeiträge
Administrator.de Feedback
Was als Noob hier mal gesagt werden musste
Information von th30ther vor 4 StundenAdministrator.de Feedback

Moinsen wertes Forum, ich möchte mich an dieser Stelle mal beim Forum generell und bei aqui speziell bedanken! Ich ...

Netzwerkmanagement

Neue Angebotsmail ist raus: 10 Prozent auf alle Docusnap Lizenzen

Information von Frank vor 10 StundenNetzwerkmanagement

Hallo IT-Pros, unsere Angebotsmail ist raus: Exklusive für unsere Administrator.de-Mitglieder gibt es heute auf alle Miet- und Kauflizenzen von ...

Windows 10
Windows 10 Mai 2019 Update (Version 1903) ist da
Information von kgborn vor 14 StundenWindows 103 Kommentare

Nur ein kurzer Infosplitter: Microsoft hat die Nacht (21. Mai 2019) das Funktionsupdate auf Windows 10 Version 1903 freigegeben. ...

E-Mail

Newsletter: Unread News - IT News in Byte Länge

Tipp von franktaylor vor 1 TagE-Mail9 Kommentare

Hallo, würde gerne auf einen Newsletter hinweisen, den ich heute per Zufall gefunden und mit euch gerne teilen möchte: ...

Heiß diskutierte Inhalte
Windows Server
Passwortänderung an RODC möglich?
Frage von DexthaWindows Server23 Kommentare

Hallo, ich habe einen RODC, auf welchen ich über ldaps (Web-Seite mit php7) Passwortänderungen durchführen möchte. Ist das grundsätzlich ...

Windows Server
Ungewollte IP Änderung am DC sorgt für Probleme
Frage von thomas-99Windows Server19 Kommentare

Hallo Zusammen, wir haben ein kleines Netz mit 5 verschiedenen VMs (DC, AD, Fileserver, Exchange, TK Anlage - alle ...

Windows Server
RDP als Citrix Alternative
gelöst Frage von samreinWindows Server19 Kommentare

Hallo zusammen, ich bin neu hier und das ist mein erster Beitrag. Ich bin Einzeladmin und wir setzen bei ...

Hyper-V
Novell virtualisieren
Frage von spoboeHyper-V18 Kommentare

Hallo zusammen, ich habe absolut keine Ahnung von Novell, aber wir haben hier ein ganz altes Schätzchen (vermutlich Novell ...