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

Frage Entwicklung

GELÖST

Windows XPe RDP save User Credentials

Mitglied: addamain

addamain (Level 1) - Jetzt verbinden

27.05.2014 um 08:57 Uhr, 2775 Aufrufe, 24 Kommentare

Hallo zusammen,

ich muss auf einem Windows XP embedded Thin Client von HP es irgendwie schaffen, dass direkt nach dem Start eine RDP Session auf einen Server gestartet wird ohne dass der Benutzer seine Anmeldedaten immer eingeben muss.

Nun ist mir aufgefallen, dass Windows XPe keine cmdkey.exe hat und daher die Passwörter nicht hinterlegen kann... Ich habe in ein paar Foren gesehen, dass ich die einfach aus einem Windows Srv 2003 herauskopieren kann und auf dem ThinClient einspielen kann - das werde ich versuchen im Laufe des Tages zu lösen.

Nun meine Frage: Ist es irgendwie möglich über ein Programm (vielleicht C#) eine RDP Session zu öffnen bei der ich die Benutzerdaten entweder als Variable deklariert habe oder diese aus einer Text Datei herausgelesen werden? Das Programm sollte natürlich nicht mit cmdkey.exe funktionieren - davon habe ich schon ziemlich viele im Internet gefunden.

Könnt ihr mir bitte helfen?


Viele Grüße ;)
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Hallo addamain,
also du könntest das Passwort mit einem Powershell-Script deinem Tresor hinzufügen:
01.
function Add-Credentials { 
02.
param( 
03.
    [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$Server, 
04.
    [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$Username, 
05.
    [parameter(mandatory=$true)][ValidateNotNullOrEmpty()][string]$Password 
06.
07.
 
08.
$code = @" 
09.
[DllImport("Advapi32.dll", SetLastError=true, EntryPoint="CredWriteW", CharSet=CharSet.Unicode)] 
10.
public static extern bool CredWrite([In] ref Credential userCredential, [In] UInt32 flags); 
11.
 
12.
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)] 
13.
public struct Credential 
14.
15.
   public UInt32 flags; 
16.
   public UInt32 type; 
17.
   public IntPtr targetName; 
18.
   public IntPtr comment; 
19.
   public System.Runtime.InteropServices.ComTypes.FILETIME lastWritten; 
20.
   public UInt32 credentialBlobSize; 
21.
   public IntPtr credentialBlob; 
22.
   public UInt32 persist; 
23.
   public UInt32 attributeCount; 
24.
   public IntPtr Attributes; 
25.
   public IntPtr targetAlias; 
26.
   public IntPtr userName; 
27.
28.
 
29.
"@ 
30.
    Add-Type -MemberDefinition $code -Namespace "ADVAPI32" -Name 'Util' 
31.
    $cred = New-Object ADVAPI32.Util+Credential 
32.
    $cred.flags = 0 
33.
    $cred.type = 2 
34.
    $cred.targetName = [System.Runtime.InteropServices.Marshal]::StringToCoTaskMemUni($Server) 
35.
    $cred.userName = [System.Runtime.InteropServices.Marshal]::StringToCoTaskMemUni($username) 
36.
    $cred.attributeCount = 0 
37.
    #Erhalten der Credentials: 1 = Session / 2 = Local Machine / 3 = Enterprise 
38.
    $cred.persist = 3 
39.
    $cred.credentialBlobSize = [System.Text.Encoding]::Unicode.GetBytes($Password).length 
40.
    $cred.credentialBlob = [System.Runtime.InteropServices.Marshal]::StringToCoTaskMemUni($Password) 
41.
    $result = [ADVAPI32.Util]::CredWrite([ref]$cred,0) 
42.
    return $result 
43.
44.
 
45.
Add-Credentials -Server 'Testserver' -Username 'DOMAIN\user123' -Password 'Passw0rd'
In der letzten Zeile werden deine entsprechenden Credentials und der Servername an die Funktion übergeben.
Falls auf dem System noch kein Managment-Framework vorhanden ist, kannst du dies nachrüsten.

Auf dem XP-System kannst du die hinzugefügten Credentials ja mit control keymgr.dll überprüfen.

Wenn gewünscht lässt sich das ganze auch als Konsolen-Anwendung kompilieren wenn man das möchte.
Den entsprechenden Code dafür findest du hier: http://stackoverflow.com/questions/19410186/c-sharp-using-credwrite-to- ...

Grüße Uwe
Bitte warten ..
Mitglied: addamain
27.05.2014 um 11:04 Uhr
Hat Windows XP embedded eine Powershell vorinstalliert oder muss die auch noch nachinstalliert werden?
Bitte warten ..
Mitglied: colinardo
27.05.2014 um 11:05 Uhr
Das musst du nachrüsten mit dem Management Framework, den Link hatte ich oben gepostet:
http://support.microsoft.com/kb/968929/de

Grüße Uwe
Bitte warten ..
Mitglied: addamain
27.05.2014 um 11:07 Uhr
Super vielen Dank. Ich werde das nach der Mittagspause mal testen und gebe dir dann Bescheid ;)
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Ich habe dir gerade mal schnell eine Konsolen-EXE kompiliert die das selbe macht > Download hier.

Sie wird so auf der Konsole verwendet:
AddDomainCredentials.exe "SERVERNAME" "DOMAIN\USERNAME" "PASSWORD"
Sie benötigt NET-Framework 2.0

Grüße Uwe
Bitte warten ..
Mitglied: addamain
27.05.2014 um 12:28 Uhr
Ich muss dich noch einmal kurz was Fragen^^ Und zwar was genau muss ich an deinem geposteten Script anpassen?

In der letzten Zeile muss ich "Testserver", "DOMAIN\user123" und "Passw0rd" anpassen - wie sieht es mit den Zeilen 3-5 aus ("$Server", "$Username" und "$Password")?

Danke für deine Hilfe.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Zitat von addamain:

Ich muss dich noch einmal kurz was Fragen^^ Und zwar was genau muss ich an deinem geposteten Script anpassen?
nur die letzte Zeile ! Oben das sind nur die Parameter-Variablen die du mit der letzten Zeile an die Funktion übergibst.
Bitte warten ..
Mitglied: colinardo
27.05.2014, aktualisiert um 12:39 Uhr
Nur noch zur Info. Im Moment ist die Dauerhaftigkeit der Credentials auf "LOCAL MACHINE" festgelegt. Wenn "ENTERPRISE" benötigt wird (musst du testen was du brauchst) muss die Zeile 38 so abgeändert werden (habe das oben abgeändert)
$cred.persist = 3
Grüße Uwe
Bitte warten ..
Mitglied: addamain
27.05.2014 um 12:53 Uhr
Ok, das schaue ich mir an. Ich teste das gerade auf meinem Windows 8.1 System weil der Thin Client mit Windows XPe die ganze Zeit wieder ausgeht (defekt). Ich schaue mal ob ich einen anderen organisiert bekomme.

Auf meinem System Speichert er den Anmeldenamen aber das PW nicht - ist das bei Windows XPe dann anderst?
Bitte warten ..
Mitglied: colinardo
27.05.2014, aktualisiert um 13:01 Uhr
Habe das Script auf Windows 7 x64 und XP getestet Passwort wird erfolgreich gespeichert... Windows 8.1 steht noch aus (-edit- gerade getestet geht einwandfrei)...
Auf meinem System Speichert er den Anmeldenamen aber das PW nicht
woraus folgerst du das das Passwort nicht gespeichert wurde ?

WICHTIG! Wenn du Sonderzeichen wie $ etc. in deinem Passwort hast musst du das Passwort mit einfachen Anführungszeichen umschließen
Bitte warten ..
Mitglied: addamain
27.05.2014 um 13:02 Uhr
Wenn ich das .ps1 Skript ausführe kommt als Rückgabewert "True". Wenn ich dann eine RDP auf den Server starte, zeigt er mir den richtigen Benutzernamen an, nach kurzem geht aber ein Fenster auf in dem er wieder nach den Benutzerdaten fragt.

Domäne, Benutzername, Server IP und Passwort habe ich überprüft und die Daten passen. Hast du noch eine Idee? Habe es gerade auch noch auf meinem virtuellen Windows 7 Client getestet, da habe ich genau das gleiche Problem...
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
hast du mal wie oben geschrieben die Persistence auf "Unternehmen" gesetzt ? :
$cred.persist = 3
Kann das mit dem Auto-Connect gerade nicht testen, werde ich später mal machen ...
hast du Sonderzeichen wie $ in deinem Passwort? dann siehe vorheriger Kommentar..
Bitte warten ..
Mitglied: addamain
27.05.2014, aktualisiert um 13:20 Uhr
Nein, habe das Passwort zum testen auf Start123 gesetzt. Ich habe gerade von einem Kollegen ein anderes Script bekommen, was an sich gar nicht schlecht aussieht. Es öffnet direkt eine RDP Session mit den im Script hinterlegten Benutzer- und Serverdaten.

Mal eine andere Frage, die eigentlich nicht zum Thema gehört: Wie kann ich aus der .ps1 Datei eine .exe Datei machen?

Hier mal nach das Script von meinem Kollegen:

01.
$servername = "IPoderServername" 
02.
$username = "domäne\administrator" 
03.
$passwort = "Start123" 
04.
 
05.
Function Open-RDPSession($Server,$User,$Password) 
06.
07.
    Write-Host "- saving RDP credential" -ForegroundColor green 
08.
    cmdkey /generic:$server /user:$user /pass:$Password 
09.
    write-Host "- opening RDP" -ForegroundColor green 
10.
    mstsc /v:$Server /W:800 /h:600 
11.
12.
 
13.
Open-RDPSession $servername $username $passwort 
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
ja aber das nutzt ja wieder deine cmdkey.exe die du ja nicht nutzen wolltest...

Mal eine andere Frage, die eigentlich nicht zum Thema gehört: Wie kann ich aus der .ps1 Datei eine .exe Datei machen?
man kann wenn man den Code in C# umschreibt und dann mit Add-Type das Assembly kompiliert. Ich bau dir später mal was dazu ...

Zu deinem anderen Problem, es könnte sein das du Generische Anmeldeinformationen benötigst anstatt Windows Credentials, das musst du evaluieren. Dann muss
diese Zeile
$cred.type = 2 
so abgeändert werden:
$cred.type = 1
Bitte warten ..
Mitglied: addamain
27.05.2014 um 13:32 Uhr
Top, die letzten 3 Zeilen waren es^^ Jetzt funktioniert das. Jetzt schaue ich mal dass ich den Thin Client einfach mal wieder zum laufen bekomme und werde das ganze dann nochmal testen wenn ich PS installiert habe.

Vielen Dank
Bitte warten ..
Mitglied: colinardo
LÖSUNG 27.05.2014, aktualisiert 28.05.2014
Na also .

So ich habe gerade mal eine EXE mit C# geschrieben die das Erstellen der Credentials und den Auto-Login in einer Konsolen-Anwendung zusammenfasst. Du kannst sie hier herunterladen:
Ich habe mal zwei Versionen erstellt, die eine zur Nutzung mit .NET 2.0 und die andere für .NET 4.0 (da Windows 8 standardmäßig das .NET 2.0 nicht installiert hat)

Die Credentials werden jeweils immer nur für die Session angelegt und sind bei Abmeldung vom Client-Rechner wieder weg.

Die Benutzung erfolgt folgendermaßen
rdpautologin.exe "SERVER" "DOMAIN\User" "PASSWORD" GENERIC "OPTIONALE RDP-PARAMETER"
Anstatt GENERIC kann auch WINDOWS verwendet werden , wenn das gewünscht ist. Zusätzlich können optionale RDP-Parameter für den Aufruf mitgegeben werden. Der Parameter /v:SERVER ist aber schon fest im Programm mit eingebaut, dieser darf also nicht angegeben werden.
Hier noch mal ein Beispielaufruf:
rdpautologin.exe "ts-01" "DOMAIN\mmuster" "Passw0rd" GENERIC "/W:800 /H:600"
Habs hier mal mit Windows 8.1 erfolgreich getestet. Ist natürlich noch BETA aber wenn's das macht was du willst, freu dich

Viel Spaß.
Grüße Uwe
Bitte warten ..
Mitglied: addamain
28.05.2014 um 13:36 Uhr
Hey ;)

Ich habe das Powershell Skript mal noch ein bisschen angepasst und er öffnet mir jetzt direkt auch noch die RDP Session nach der Ausführung. Jetzt wollte ich das ganze auf dem Windows XPe Thin Client testen und muss erst noch PS installieren. Ich habe von dieser Seite: http://support.microsoft.com/kb/968929/de diese Datei heruntergeladen: "Downloaden Sie Windows Management Framework Core für Windows XP und Windows Embedded-Paket jetzt." Da wird man auf KB968930 weitergeleitet. Ich habe die .exe Heruntergeladen und auf unser NAS abgelegt. Nun habe ich das Setup auf dem Thin Client gestartet und dann kommt die Meldung, dass die Sprache des OS nicht mit der des Updates übereinstimmt...

Hast du da eine Idee? Es gibt bei diesen HP Thin Clients anscheinend so nen Schreibschutz den man entsperren kann - könnte das da dran liegen?
Bitte warten ..
Mitglied: colinardo
28.05.2014, aktualisiert um 13:54 Uhr
Zitat von addamain:
Meldung, dass die Sprache des OS nicht mit der des Updates übereinstimmt...
du musst natürlich hier http://www.microsoft.com/en-us/download/details.aspx?id=16818 die native Sprache deines XP Embedded auswählen !!
Bitte warten ..
Mitglied: addamain
28.05.2014 um 13:44 Uhr
Ok habe bei der Sprachauswahl englisch ausgewählt und der hat wieder die Deutsche Datei heruntergeladen gehabt.. Mit deinem Link aber hat es geklappt - vielen Dank

Nun habe ich aber gleich auch schon das nächste Problem: Er will bzw. braucht SP3 - kann ich das Problemlos über Windows Updates installieren?
Bitte warten ..
Mitglied: colinardo
28.05.2014, aktualisiert um 13:51 Uhr
Ok habe bei der Sprachauswahl englisch ausgewählt und der hat wieder die Deutsche Datei heruntergeladen gehabt
Wenn du nicht lange genug wartest nachdem du die Auswahl geändert hast, passiert das beschriebene.

Nun habe ich aber gleich auch schon das nächste Problem: Er will bzw. braucht SP3 - kann ich das Problemlos über Windows Updates installieren?
Steht hier alles wie du vorgehen musst:
http://support.microsoft.com/kb/958255/de

Grüße Uwe
Bitte warten ..
Mitglied: colinardo
28.05.2014, aktualisiert um 13:56 Uhr
p.s. warum testest du nicht mal meine EXEs von oben ? Ich kann dir auch gerne den Quellcode schicken, wenn du mir nicht vertraust ...
Bitte warten ..
Mitglied: addamain
28.05.2014 um 14:01 Uhr
Ums Vertrauen gehts da ned ;) Das ist schon da Das Problem ist nur dass ich mir die PowerShell zum Beispiel in den Autostart legen kann und dann wird automatisch die RDP Session aufgebaut Das wäre super wenn das funktioniert ;)
Bitte warten ..
Mitglied: colinardo
28.05.2014, aktualisiert um 14:08 Uhr
Das Problem ist nur dass ich mir die PowerShell zum Beispiel in den Autostart legen kann und dann wird automatisch die RDP Session aufgebaut
öhm, wo ist das Problem? das kannst du mit der exe auch ... einfach eine Verknüpfung mit den entsprechenden Parametern anlegen in den Autostart packen,
oder die Zeile in den einschlägigen Autostart-Registry-Einträgen hinterlegen,
oder in den Taskplaner packen

feddich !

Denke das Thema sollte jetzt gelöst sein. Den Beitrag dann bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Bitte warten ..
Mitglied: addamain
28.05.2014 um 15:20 Uhr
Gut Alles klar, dann bastel ich mal ;) Vielen Dank für deine 1. klassige Unterstützung ;)
Bitte warten ..
Ähnliche Inhalte
Windows Netzwerk
Temporäre Credentials während einer Windows-Sitzung wieder löschen
gelöst Frage von Shiva99Windows Netzwerk8 Kommentare

Ich weiß, das Thema wurde auch hier schon sehr oft diskutiert, aber trotzdem finde ich nix schnell zu meinem ...

Windows Userverwaltung
RDP-User-Rechte einschränken
Frage von KalmannWindows Userverwaltung3 Kommentare

Moin, ich stecke hier gerade zwischen den Wahnvorstellungen verschiedener Geschäftsführer und frag mich wie ich das umsetzen soll. Würde ...

Router & Routing
Firewall Konfiguration Saven
gelöst Frage von Giusi1Router & Routing6 Kommentare

Guten Tag allerseits Kann mich jemand ein Rat geben? was hie falsch ist? Ich komme im moment nicht weiter ...

Windows 7
Netzwerkdrucker von andere Domain einbinden - wo speichert Windows die Credentials?
gelöst Frage von d.fischerWindows 71 Kommentar

Hallo zusammen, ich habe eine Frage deren Lösung mir einiges erleichtern würde. Zur Ausgangslage: AD-Konten der Anwender werden in ...

Neue Wissensbeiträge
Linux

Sicherheit Meltdown und Spectre: Linux Update

Information von Frank vor 4 MinutenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code ist nun für Fedora freigegeben worden. Er behebt ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 18 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 18 StundenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 19 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen21 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...