Laden...

Forenbeiträge von Urmel77 Ingesamt 21 Beiträge

21.01.2014 - 15:23 Uhr

Hab noch was dazu gefunden, vielleicht hilft es ja noch jemand der das selbe Problem hat 😉

The Perils and Pitfalls of Launching a Process Under New Credentials

21.01.2014 - 11:47 Uhr

Hallo herbivore,

vielen Dank für die Info, ich versuche es mal mit einer reinen Konsolenversion. Falls das nicht klappt, gliedere ich vielleicht die dll's des ScriptLoaders in das Update-Programm mit ein. Dann kann der Dienst das Ganze intern ausführen ...

Beste Grüße ... Urmel

20.01.2014 - 16:49 Uhr

Hallo zusammen,

ich steh mal wieder vor einem Problem, vielleicht hat ja jemand eine gute Idee ... Bei dem Programm geht es um ein Update-Service, der Binaries und die SQL-Datenbank aktualisieren soll.

Der WPF-Client für die Steuerung ist auf einem Client (Admin-PC) und per WCF mit dem Update-Service (Windows-Service) auf dem Terminal-Server verbunden. Der Update-Service läuft aus Sicherheitsgründen unter dem Konto "Lokales System". Dieser Übernimmt das Update von einem FTP-Server und führt es auf dem Terminal-Server aus. Nach dem Update der Binaries soll auch noch die SQL-Datenbank auf dem SQL-Server angepasst werden. Dafür wird eine selbst geschriebene Anwendung (ScriptLoader) von dem Update-Service als Prozess gestartet, welche das erledigt. Der ScriptLoader liegt auch auf dem Terminal-Server.

Da der ScriptLoader mit den Rechten des Service (Lokales System) nicht weit kommt, gebe ich dem Prozess beim Start noch die Daten eines Kontos mit, welches die entsprechenden Berechtigungen besitzt.

Der Aufruf aus dem Windows-Service sieht ungefähr so aus:


string args = getArgs(config);
Process scriptLoader = new Process();
ProcessStartInfo psi = new ProcessStartInfo(Path.Combine(turista.getBinPath(), Resources.tScL), args);

                            if (user != null)
                            {
                                psi.UserName = user.Benutzer;
                                psi.Password = user.Passwort;
                                psi.Domain = user.Domaene;
                                psi.CreateNoWindow = true;                            
                            }

                            scriptLoader = Process.Start(psi);
                            scriptLoader.WaitForExit();
                            int tScLResult = scriptLoader.ExitCode;
                            scriptLoader.Close();

Beim Starten kommt dann immer der Fehler:

Fehlermeldung:
System.ComponentModel.Win32Exception (0x80004005): Zugriff verweigert
bei System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
bei System.Diagnostics.Process.Start()
bei System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
bei System.Diagnostics.Process.Start(String fileName, String arguments, String userName, SecureString password, String domain)
bei Wuw.TuristaUpdateService.Functions.ScriptLoader.Run(ScLConfig config, Verzeichnisstruktur turista, User user)
bei Wuw.TuristaUpdateService.Functions.StartConditions.Check(UpdConfig updateConfig, ScLConfig tSlcConfig, UpdArgs args, Verzeichnisstruktur turista, User user)

Wenn ich den Prozess direkt aus dem Programm ohne Service ausführe, funktioniert alles. Jetzt vermute ich das es mit dem "Lokales System"-Konto zusammen hängt?!? Fehlen dem Konto Rechte um die Anwendung selbständig ausführen zu können oder hat liegt es eher daran, das in der System-Konto Umgebung keine GUI-Darstellung möglich ist? Man muss dazu sagen das der ScriptLoader ein Hybrid ist, und als Konsolenanwendung mit Parameter, sowie bei Doppelklick mit der Maus auch mit einer GUI gestartet werden kann. Ich dachte Konsolen-Aufruf und "CreateNoWindow = true" reichen 😉:

Bin da gerade ein bisschen ratlos ... kennt jemand das Problem?

17.08.2011 - 16:49 Uhr

Hallo,

einige der Komponenten des TSF nutzen wir auch schon, so werden jede Nacht automatisch die Unit-Tests angeworfen und eventuelle Fehler liegen uns am nächsten Morgen per Mail vor. So lange wir komplette zusammen passende Komponenten ausliefern, haben wir auch keine Probleme. Meistens entstehen Konflikte wenn wir eine neue Komponete zu den alten des Kunden liefern. Eigentlich müssten dann alle Komponenten durch die neuen ersetzt werden dann gäbs auch keine Probleme, das ist aber oft von den Kunden nicht gewünscht da für die neuen Komponenten oft spezielle Anpassungen notwendig sind.
Dann wirds kniffelig. Beißt sich eine .dll der neue Komponente mit einer .dll der alten Komponenten. Diese Beziehungen von 1000en dll's und deren Versionen untereinander ist die große Herausforderung.
Und für die Verwaltung dieser Kombinationen bräuchte ich ein Tool das mir die Arbeit erleichtert, wo alle .dlls und Verweise zu sehen sind. Wo die Programmierer Einträge machen können, sobald eine .dll entwickeln die nicht abwärtskompatibel ist. Ab dem Zeitpunkt funktionieren ja alle alten Komponenten nicht mehr die darauf verweisen. So könnte man ein logisches Netz aus passenen Permutationen aller Gültigkeiten machen ... so hab ich mir das zumindest vorgestellt ...

... und bevor ich das selber schreibe dachte ich, ich schau mich mal um obs schon was in der Richtung gibt 😃. Aber sieht wohl eher schlecht aus.

17.08.2011 - 15:04 Uhr

Hallo zusammen, danke für die Antworten!

@FZelle ... ist das Standarddingens von TFS nicht SourceSafe? ... Also wir nutzen halt den SourceControl des TFS.

Die Unit-Tests nutzen wir auch, aber wir haben zum Teil so viele Programme draußen, das es schwierig ist und unübersichtlich ist. Ich dachte da gäbs vielleicht schon was revolutionäres 😃.

Über die Referenzen und Protokolle machen wir es gerade, aber der Abhängigkeitsgraph ist mittlerweile schon so komplex das es mich einfach nervt da jedes mal alles durch zu gehen. Gerade weil nicht immer klar ist ob abwärtskompatibel etc. ...

17.08.2011 - 13:54 Uhr

Hallo zusammen,

ich bin auf der Suche nach einem Tool/Extention für VS 2010 mit dem man die Programmversionen und Abhängigkeiten verwalten kann.
Zum Hintergrund: Wir haben einen Team-Foundation Server und verwenden Source-Safe. Jetzt haben wir immer wieder Probleme mit der Übersicht wenn wir beispielsweise Teile der Basis-Bibliotheken ändern. Auf welche Programme hat das Auswirkung ... was muss beim Kunden alles ersetzt werden .. Welche .dll arbeitet mit welcher ... etc.
Gibt's da was Geschicktes mit dem man die Beziehungen verwalten kann? Das vielleicht Alarm gibt wenn jemand nicht abwärts Kompatiblen Code eincheckt.
Oder wo man Regeln zur Auslieferung angeben kann ... Version 1.0.8.1 des Programms A ist mit Version 1.0.7.x des PRogramms B und 1.0.8.5 des Programms C kompatibel.

Ich denke mal damit schlagen sich ja die meisten rum, da müsste es doch schon was tolles geben 😉.

Viele Grüße ... Urmel

02.08.2011 - 16:13 Uhr

Ah jetzt ja,

danke für die Antworten, werde das mit dem Parameter mal testen ...

@Grumbler85: Der Hintergrund ist der, bei den neuen SQL Server kann man ja den SQL/CMD Mode aktivieren und solche Befehle direkt aus dem SQL-Skript ausführen. Mein Programm führt die Skripte aber vollautomatisch aus, und ich würde gerne auch die CMD-Befehle in den SQL-Skripten ebenfalls automatisch ausführen. Diese kommen bei mir im Programm zwischen der SQL-ausführung jetzt als String an und ich weiß noch nicht genau wie ich sie ausführen soll.

Grüßle ...

Nachtrag ... mit /C hat funktioniert 😃 ... Danke!

02.08.2011 - 15:50 Uhr

Hallo Zusammen,

ich würde gerne einen String direkt aus dem C# Code über die CMD ausführen (kopiervorgänge/Dateien umbenennen/etc). Das sollte möglichst allgemein gehalten werden, ohne Angabe was ich jetzt für eine .exe nutzen will, da dies ja mit jedem neuen String variieren kann.
Ich hab mir "ShellExecute" und "Process" schon angeschaut, aber die wollen alle die auszuführende Datei als Pflichtparameter.
Gibt es die Möglichkeit einfach nur den String auszuführen?

Grüßle ... Urmel

14.01.2011 - 11:42 Uhr

Hallo,

das wäre noch eine Idee. Dann müsste man die Installation halt auf jeden Fall als Domänen-Admin durchführen, da man vom Client sonst wohl eher nicht auf die Registry des Servers zugreifen darf 😃 ...
Ich probier das mal aus ...

Danke!

14.01.2011 - 11:34 Uhr

Da zu diesem Zeitpunkt nicht unbedingt ein Login für die SQL Server Authentifizierung bekannt ist, klappt das leider nicht. 😦

13.01.2011 - 17:22 Uhr

verwendetes Datenbanksystem: SQL 2008

Hallo zusammen,

ich hab da eine Frage. Ist es möglich aus c# heraus zu überprüfen ob der gemischte Modus an einem SQL-Server aktiviert ist? Quasi das gleich wie die SQL-Abfrage "EXEC master.sys.xp_loginconfig 'login mode'", nur halt aus meinem c# Programm heraus?

Hintergrund ist der, ich will bei der Installation des Programms überprüfen ob der gemischte Modus aktiviert ist, da dieser benötigt und immer wieder vergessen wird.

Vielen Dank ...

09.12.2010 - 17:36 Uhr

Das wäre noch eine Idee, der wird im Setup bei den Specialfolder gar nicht mit angebeoten. Da haben Sie wieder an der falschen Stelle mit Einträgen gespart. Wird immer komplizierter das Zeugs 😉 ...

09.12.2010 - 17:06 Uhr

Hey Maximilian,

danke für die Antwort. Ist aber doch ein bisschen ungeschickt wenn das Fehlerprotokoll bei den einzelnen Benutzern aufläuft. Das wäre gesammelt dann schon etwas übersichtlicher 😃 ...
Vielleicht stricke ich dann doch etwas das die Berechtigungen beim Setup anpasst.

Grüßle ... Urmel

09.12.2010 - 16:26 Uhr

Hallo zusammen,

ich habe folgendes Problem und leider noch nichts brauchbares dazu gefunden. Vermutlich seh ich mal wieder den Wald vor lauter Bäumen nicht ...

Meine Setup's (c# - mit VS 2010) legen eine eigene Ordnerstruktur an, dabei auch einen Ordner "Log" für Logdateien und Protokolle und Fehlermeldungen etc. Wenn ich das Setup als Administrator auf einem Windows 7 PC ausführe und das Programm in den offiziellen Programm-Ordner installiere (Bsp.: C:/Program Files/MyProgram...) bekommt der Ordner für die Logfiles nicht die richtigen Berechtigungen (Nur bei Windows 7).
Sobald sich ein Benutzer ohne Adminrechte anmeldet und das Programm verwendet hat er nicht die Berechtigungen um in den Log-Ordner zu schreiben. Gibt es da einen einfachen Weg die Berechtigungen für die Ordner gleich richtig mitzugeben?

Das Problem hab ja mit Sicherheit nicht nur ich 😉 ....

Viele Grüße ... Urmel

10.08.2009 - 11:20 Uhr

Hallo zusammen,

danke für die schnelle Antwort. Da hab ich ja jetzt einige Möglichkeiten zum durchprobieren 😃 ... Ich fange mal mit den günstigsten Lösungen an ...

Vielen Dank ... Urmel

07.08.2009 - 16:48 Uhr

Hallo zusammen,

ich verwende Visual Studio 2008 und möchte für meine Projekte gerne erweiterte Setups erstellen. Beim starten des Setups soll nicht nur die Laufzeitumgebung über die Standartoberfläche installiert, sondern noch einige Elemente hinzugefügt werden.

Hilfreich wären ein paar zusätzliche Forms für eventuelle Einstellungen, sowie eine Ausführung von Datenbankskripten durch das Setup. D.h. das Setup soll eigenen .dll's und SQL-Skripte während der Installation ausführen.

Meine Frage: Ist das mit den Standarttools möglich oder brauche ich da was Extra?
Wenn ja, was brauche ich oder wie funktioniert das? 😃

Vielen Dank
Grüßle ...

03.12.2008 - 13:57 Uhr

Hallo, ich hab da ein Problem.
Ich möchte aus einer WPF-Anwendung unter anderem einen Onlinedienst ansprechen, welcher den Kreditkartenstatus nach einer Bestellung überprüft (Zahlung ok oder nicht). Ich habe da einen Anbieter der diese Funktionalität über HTTPS und ein verschlüsselten Login anbietet.
Da ich in diesem Projekt WCF zur Kommunikation mit anderen Diensten verwende, würde ich hier auch gerne über diese Technologie arbeiten.
Da die im Web angebotene Schnittstelle zur Statusabfrage der Kreditkarte jedoch keine WCF Schnittstelle ist, schaffe ich es momentan nicht sie als Dienstverweis einzufügen. Welche Möglichkeiten habe ich hier die Schnittstelle zu bedienen?

Wenn ich die Url "https://c3-test...." als Dienstverweis angebe kommt eine Meldung "Ihre Anforderung muss vom Server authentifiziert werden. Die Anmeldeinformationen werden unverschlüsselt an den Server übermittelt. Möchten Sie fortfahren?"
Wenn ich auf Ja drücke und die Anmeldeinformationen eingebe kommt "Fehler beim Herunterladen von der Adresse. Stellen Sie sicher , dass eine gültige Adresse eingebunden wurde".
Ich gehe davon aus das ich zur Authentifizierung mehr als die vom Assistenten angebotenen Daten mitgeben müsste.

Unter PHP lässt sich die Schnittstelle folgendermaßen bedienen:

<?php

function curl_string ($url, $post, $header) {
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_POST, 0);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
if ($header != "") {
curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
}

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);  
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);  
ob_start ();  
$result = curl_exec ($ch);  
ob_end_clean ();  

curl_close ($ch);  

return $result;  

}

$data1 = "user";
$data2 = "passwort";
$url = "https://c3-test...";

$header = array ("Authorization: Basic "
. base64_encode ($data1 . ":" . $data2 . "\n"),
"Content-Type: text/xml");

$post = "karteninfos als xml...";

$data = curl_string ($url, $post, $header);

if ($data == false) {
print ("unable to contact payment service");
} else {
print ("Response:\n\n");
print ($data);
print ("\n");
}

?>

03.09.2008 - 17:18 Uhr

Ja perfekt!!!! Genau das hab ich gesucht!!!!
Danke!!!!

03.09.2008 - 11:04 Uhr

Hallo, ich würde gerne in einem WPF Projekt die Möglichkeit bieten, die Positionen der Fenster individuell durch drag & drop anzupassen.
Ich stelle mir das so ähnlich wie in Visual Studio 5/8 vor, wo man die Fenster auf die Vierecke schieben kann, und somit die Position des Fensters festlegt. Optimal wäre auch noch die Möglichkeit wie in VS die Fenster durch Tabs getrennt übereinander legen zu können.
Gibt es diese Funktionalitäten in einem Steuerelement schon irgendwo fertig?

Vielen Dank!
... Grüßle Urmel

14.07.2008 - 12:04 Uhr

Hallo michlG,

danke für die schnelle Antwort, dann werde ich gleich mal versuchen die Basics in einem Testprojekt umzusetzen.

Grüßle ... Urmel

11.07.2008 - 11:44 Uhr

Hallo,

ich bin gerade am überlegen ob ich ein altes WinForm Projekt für die nächste Release mit VisualStudio 2008 in WPF umsetze. Da ich mich noch nicht wirklich auskenne, weiß ich nicht ob sich damit auch alle meine Wünsche realisieren lassen.
Einer der wichtigsten Wünsche wäre eine Fahrer-Fahrzeugzuordnung. Das ganze sähe dann so aus, das in einer Tabelle die Fahrer und in einer anderen die Fahrzeuge zur Verfügung stehen. Diese sollen nun per Drag & Drop einem Dienst, welcher sich in einem weiteren Datengrid befindet, zugewisen werden. Beispielsweise soll das Fahrzeug "12" und der Fahrer "Fritz" per Drag & Drop oder wahlweise durch Markieren dem Dienst G123 (So 6:53 Uhr - 9:12 Uhr) zugewiesen werden. Bei einem Doppelclick auf den Dienst sollen anschließend die Werte des Fahrers sowie des Fahrtzeugs abgerufen werden können.
Dazu käme noch eine Überprüfung der Dienste nach möglichen Doppelbelegungen, eingehaltene Lenkzeiten und Pausen etc.

Frage: Ist sowas Theoretisch mit den vorhandenen WPF-Controls möglich und wenn ja mit wieviel Aufwand muss ich da rechenen?
Das ganze ist im Augenblick unter WinForms mit Felxgrid's etc. realisiert.

Vielen Dank ...