Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
AppDater (ehemals K_Updater)
dennisspohr
myCSharp.de - Member

Avatar #avatar-2982.jpg


Dabei seit:
Beiträge: 487
Herkunft: Westerwald

beantworten | zitieren | melden

@DeadEye: warum? :-P
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Der Sinn an der Stelle ASP zu verwenden erschließt sich mir jetzt auch nicht.
Die Unterstützung von MS-SQL ist für später (etwa 1.8.0) geplant.
private Nachricht | Beiträge des Benutzers
DeadEye
myCSharp.de - Member



Dabei seit:
Beiträge: 55
Herkunft: Vienna

beantworten | zitieren | melden

Ich meinte nicht anstelle, sondern eher als alternative.
Ich gehoere zwar auch zu den leuten die Server mit PHP sowie MySQL besitzen,
aber ich habe (und bin sicher nicht der einzige) auch Server auf denen nur IIS läuft (Und auf solchen Maschinen PHP einzurichten find ich is der Horror :P).

Es ist nicht so das ich etwas gegen PHP oder so habe, aber ich hab zb in meinen Internen netzwerk nur IIS.

Das Admintool koennte ja automatisch erkennen ob es sich um einen Win oder *nix Server handelt und je nachdem entsprechende Dateien verwenden (bzw je nach Benutzerwahl)

Das waere jetzt aber nur so eine Idee
Languages: C#, C, C++, Java, VB, PHP, ASP, HTML/XHTML, XML, CSS, JavaScript.
learning since: 1996
IDE's: Visual Studio 2008 Team Editon, Eclipse, Sharpdevelop / Monodevelop
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Also in dem Punkt muss ich dir Recht geben... PHP auf einem IIS einzurichten... Himmel... das musste ich zweimal hier in der Firma machen und ich saß jeweils n halben Tag dran. Müsst ich mir mal anschauen wieviel Zeit das genau in Anspruch nehmen würde.

Übrigens kommt in der nächsten Version nun auch endlich die Möglichkeit die Nachricht am Ende des Updatevorgangs zu unterdrücken. So muss nicht mehr mit OK bestätigt werden.

Das Proxyproblem bin ich gerade dabei zu lösen.
private Nachricht | Beiträge des Benutzers
Jabi
myCSharp.de - Member



Dabei seit:
Beiträge: 223

beantworten | zitieren | melden

also ich habe auch einen domainserver auf dem asp.net ( kein php) und my Sql genutzt wird
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4189

beantworten | zitieren | melden

Bzgl. des Cross-Thread-Fehlers habe ich auch schon einen Eintrag in den Bug-Tracker Mantis eingetragen: http://www.klausmoster.de/mantis/view.php?id=87

Als Workaround:


Control.CheckForIllegalCrossThreadCalls = false;
SUpdate.DoUpdate();
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

Neue Statistikauswertung

beantworten | zitieren | melden

Um mal einen kleinen Vorgeschmack zu geben was die neue Statistikauswertung so bietet hab ich n kleines Video davon gemacht.

Hier der Link zum Video: Klick
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
DeadEye
myCSharp.de - Member



Dabei seit:
Beiträge: 55
Herkunft: Vienna

beantworten | zitieren | melden

Also das sieht ja schon ganz cool aus
Languages: C#, C, C++, Java, VB, PHP, ASP, HTML/XHTML, XML, CSS, JavaScript.
learning since: 1996
IDE's: Visual Studio 2008 Team Editon, Eclipse, Sharpdevelop / Monodevelop
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ich bin nun dabei dieses Problem mit den Adminrechten zu lösen.

Schritt 1 ist mal gelöst: es ist möglich - wenn man das will - die Benutzerinformationen unter dessen Rechten die updater.exe ausgeführt werden soll direkt anzugeben. Das bedeutet der Anwender müsste nichts mehr bestätigen und das Update würde durchlaufen.

Ich konnte das auch unter XP erfolgreich testen. Der Benutzer hatte eingeschränkte Rechte, konnte das Update aber dennoch durchführen und im Programmeordner wurden die entsprechenden Dateien angelegt. Diese konnten im Anschluss aber auch nicht mehr vom Benutzer gelöscht werden, da dieser ja keine Rechte dazu hatte. Ich denke das ist vom Verhalten her korrekt.

Jetzt kommt aber eben noch der andere Punkt: die Kontoinformationen sollen ja nicht unbedingt schon mitgegeben werden, bzw. können sie ja auch im Normalfall gar nicht mitgegeben werden.
Wie ist in so einem Falle vorzugehen? Kann mir an dem Punkt jemand helfen wie ich eine Anwendung starte, so dass daraufhin diese Meldung aufpoppt und der Benutzer aufgefordert wird entsprechende Kontoinformationen anzugeben?

Ich denke dabei an diese Meldung:

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von EvilMM am .
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Hm, ich denke eher, dass dieses Fenster eben gerade nicht aufpoppen soll. Der stinknormale User soll ein Update ausführen können, ohne dabei selbst einen Admin Account angeben zu müssen. Das ist ja Sinn der Sache, denn sonst könnte er auch gleich sein Programm mit Adminrechten updaten.

Ich würde sagen, dass eben gerade diese Credentials in KUpadter_Admin Konsole definiert werden sollten, und bei Bedarf eines Updates werden diese Credentials übernommen.

Oder was ist deine Vorstellung von dem Ganzen?
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Aber um das Update durchführen zu können braucht er ja vorrübergehende Admin-Rechte. Und wie genau soll das dann ablaufen?

Also er braucht ja zwingend Adminrechte sonst kann er ja auf keinen Fall in den Programmordner schreiben.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Das ist ja genau das, was bei der Impersonifizierung passiert. Ich hatte dir diesbezüglich ja mal eine Klasse geschickt. Du startest also deine Update.exe ganz normal, mit normalen Rechten (das ist wichtig, denn sonst wird nach dem Update, wenn eine andere EXE automatisch gestartet werden soll, diese auch mit Admin Rechten gestartet. Das ist nicht gewollt).

Und sobald deine Update.exe zu löschen und kopieren beginnt, machst du eine Impersonifizierung. Die Credentials dazu (Domainname, Login und Password) müssen natürlich bekannt sein, und irgendwie verschlüsselt im XML Konfigurationsfile definiert sein. Nachdem du dich impersonifiziert hast, hat dein Programm diese Rechte, obwohl es noch im Taskmanager unter dem normalen User angezeigt wird. Nach dem Kopieren, also kurz bevor du die nach dem Update gewünschten Programme starten willst, hebst du die Impersonifizierung auf. Dadurch starten die Programme dann wieder als normaler User.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ja das ist ja schon klar. Aber das Problem ist doch, dass ich doch hier noch nicht die Konteninformationen eines x-beliebigen Benutzers da draußen kenne, also muss ich ihn zu Laufzeit auffordern Benutzer und Passwort einzugeben.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Ach so, jetzt versteh ich dich...

Ich geh von einer anderen Grundlage aus, dass sich nämlich die PCs, die ein Update aufspielen sollen, alle in der gleichen Windowsdomäne befinden. Da kann ich dann sehr wohl einen festen Domain User definieren, der dann lokal die nötigen Rechte besitzt.

Wenn jedoch nicht in einer Domäne, so sind diese Informationen natürlich nur auf dem Host definiert. Hmm. In dem Fall bleibt wohl wirklich nix anderes übrig, als nach einem User ze fragen, der die notwendigen Rechte besitzt. Ob das der Windowsdialog ist oder ein anderer spielt ja da keine Rolle, oder ?

Mal so rein prinzipiell könnte ich mir folgendes Scenario vorstellen:
1. Sind Credentials in der XML Datei definiert, dann verwende die, ansonsten versuche das Update mit dem eingeloggten User
2. Schlägt das Update mit dem eingeloggten User fehl wegen mangelnder Rechte, so frage nach einem anderen Account, impersonifiziere, und versuchs nochmal. Schlägts wieder fehl, nochmals fragen...
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Exakt. Genauso stell ich mir das auch vor.
Und genau diese Aufforderung benötige ich jetzt nämlich. Und da komm ich grad nicht weiter. Weil genau da stell ich mir dann vor, dass solch ein Dialog wie oben erscheint.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Von den Informationen her benötigst du ja nur Login, Passwort und eventuell Domain. Du kannst dir doch aber leicht einen solchen Dialog basteln, der genau diese Informationen abfragt. Damit kannst du ja dann versuchen, dich zu impersonifizieren... Wenn du möchtest, kann ich dir diesen Dialog erstellen.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Richtig, das müsste reichen an der Stelle.
Wenn du das machen könntest wäre das natürlich klasse. Dann könnte ich mich an der Stelle dann schonmal auf das korrekte Impersonifizieren konzentrieren.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Kein Problem... Wird zwar heut nix mehr, aber morgen werd ich mir das zur Brust nehmen... Ich werde dazu eine eigene Klasse definieren, welche die Credentials beinhalten wird, und die du nutzen kannst, um zu impersonifizieren. Ich denke das Passwort selbst werde ich wohl in einem SecureString ablegen, damit das auch alles halbwegs sicher ist. Der Dialog wird dir wohl ein DialogResult liefern, das du dann auswerten kannst...

Ist das so ok. Ich denke es macht keinen Sinn, wenn ich die Impersonifizierung selbst vornehme, da du dies ja eh machen musst, wenn in deinem XML File die UserCredentials definiert sind. Oder ?
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

So wie du dir das vorstellst wäre es gut. Passwort in SecureString wäre auch gut.

Dann bin ich mal gespannt und schonmal vielen Dank an der Stelle.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ich habe es nun so umgesetzt:

Man kann bei der Erzeugung eines Updatepaketes die Konto-Daten für die Impersonifikation angeben, wenn diese schon vorher bekannt sind.

Tritt beim Update ein Fehler auf (Dateien können nicht gelöscht oder geschrieben werden) wird - falls Informationen angegeben wurde - per Impersonifikation der Benutzer kurzfristig gewechselt. Daraufhin wird erneut versucht die Datei zu löschen oder zu kopieren. Klappt das wieder nicht bekommt der Anwender eine Meldung mit einem entsprechenden Hinweis. Er hätte dann die Möglichkeit das Update abzubrechen, die Aktion zu wiederholen oder dann eben die Kontoinformationen manuell anzugeben.

Ich glaube das müsste dann in dieser Weise ok sein oder?
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Das denke ich ist ok. Und wenn keine Credentials schon bei der Erstellung des Updates angegeben wurden, geh ich davon aus, dass gleich das Abfragefenster kommt, wenn eine Datei nicht gelöscht oder kopiert werden kann.

Ich bin heut mittag noch weg, aber werde mich dann im frühen Abend wohl um den Dialog kümmern.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Genau das wäre der Ablauf dann.

So in etwa könnte das dann bei der Updateerzeugung aussehen:



Ist das eigentlich so korrekt wenn man das dann auch als "Impersonifikation" bezeichnet oder ist da eine andere Bezeichnung üblich?
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Also Impersonifikation bezeichnet genau das, ja. Du gibts dir kurzzeitig die nötigen Rechte, und swappst dann wieder zu dem ursprünglichen User zurück. Das ist also in der Tat etwas anderes, als ein Programm von vorne heraus unter einem anderen Benutzer zu starten (RunAs)...

Noch was am Rande: Wenn du dich impersonifizierst, und dann eine andere Anwendung normal startest, so hatte diese Anwendung NICHT die Rechte des impersonifizierten Users, sondern startet ganz normal.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ich hab nun mal ein kleines Szenario nachgestellt.

Der Benutzer befindet sich auf einem XP-Rechner mit eingeschränkten Benutzerrechten.
Es sind keine Impersonifikationsinformationen hinterlegt. Das Update wird durchgeführt und versucht Dateien zu löschen.
17:09:40 [Main][deleteFiles] Delete old files...
17:09:40 [Main][deleteFiles] -> Delete C:\Programme\Testapplikation\Update\5239-sd.jpg...
17:09:40 [Main][deleteFiles]    - 1. try
17:09:40 [Main][deleteFiles]    - Could not delete file
17:09:40 [Main][impersonifyUser] Try Impersonification
17:09:40 [Main][impersonifyUser] -> No Informations
17:09:40 [Main][deleteFiles]    - 2. try
17:09:40 [Main][deleteFiles]    - Could not delete file
17:09:44 [Main][deleteFiles]    - 3. try
17:09:44 [Main][deleteFiles]    - Could not delete file
17:09:45 [Main][deleteFiles]    - 4. try
17:09:45 [Main][deleteFiles]    - Could not delete file

Nach dem ersten Versuch wird versucht dem Benutzer mehr Rechte zugeben, es sind aber keine Informationen hinterlegt. Jetzt bekommt der Benutzer einen Dialog angezeigt der derzeit noch so aussieht:



Er hat nun mehrmals auf "Wiederholen" geklickt, daher oben die mehreren Versuche.

Nun der zeite Fall:
Es wurden Impersonifikationsinformationen hinterlegt. Diese Informationen können natürlich auch nachträglich noch geändert werden, es muss ja nur das Updatepaket bearbeitet werden.

Nun schaut das ganze so aus:
17:12:26 [Main][deleteFiles] Delete old files...
17:12:26 [Main][deleteFiles] -> Delete C:\Programme\Testapplikation\Update\5239-sd.jpg...
17:12:26 [Main][deleteFiles]    - 1. try
17:12:26 [Main][deleteFiles]    - Could not delete file
17:12:26 [Main][impersonifyUser] Try Impersonification
17:12:26 [Main][impersonifyUser] -> OK
17:12:26 [Main][deleteFiles]    - 2. try
17:12:26 [Main][deleteFiles] -> Delete C:\Programme\Testapplikation\Update\96910.jpg...
17:12:26 [Main][deleteFiles]    - 1. try
17:12:26 [Main][deleteFiles] -> Delete C:\Programme\Testapplikation\Update\1247319464lpb8.jpg...
17:12:26 [Main][deleteFiles]    - 1. try

Das Update läuft ohne murren durch und der Anwender wird keine einzige Meldung sehen.

@Jelly: Das sollte jetzt so ziemlich genau dem Ablauf entsprechen den du dir vorgestellt hast.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Ich denke, das sollte so hinkommen. Vielleicht rennst du in ein Problem, wenn ein File aus irgendeinem anderen Grund nicht gelöscht werden kann (in use o.ä.). Zur Zeit gehst du in dem Fall natürlich davon aus, dass es an fehlenden Berechtigungen fehltm und versuchst zu impersonifizieren. Wie sollst du auch wissen, warum ein File nicht gelöscht werden kann... Ein Workaround dazu hab ich zur Zeit auch nicht. Ein Flag im Update Paket, z.B. always require Administrative priviledges, könnte vielleicht helfen, denn schlägt dann ein Löschen fehl, dann liegt es nicht an den fehlenden Rechten sondern an was anderem?? Aber ich denke mal, man kann auch erstmal ohne sowas arbeiten.

Ich werde wohl erst morgen dazu kommen, den Dialog zu erstellen. Krieg noch unverhofft Besuch gleich, und da macht es sich nicht gut, wenn ich mich dann vor mein VS hocke und Dialoge programmiere... Hoffe das hat also noch Zeit bis morgen... Wird aber nicht vergessen.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ja an der Stelle muss ich mir das mal überlegen.
Ich werd mal versuchen rauszufinden wie man ermitteln kann ob eine Datei gerade in Benutzung ist.

Der Dialog hat selbstverständlich noch Zeit. Habe an der Anwendung sowieso noch andere Sachen zu schaffen. Somit macht das nichts wenns heute nichts mehr wird.
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Ich hab mir das nochmal alles überlegt wie es wohl optimal wäre.
Möglich sollte von seiten der Updatepaket-Konfiguration sein entweder direkt die Credentials für die Impersonifikation zu vergeben oder alternativ auch direkt den Admin-Modus vorauszusetzen. Im zweiten Falle führe ich den Prozess updater.exe auch direkt mit requireAdmin aus.

Sollte beides nicht gewählt sein würde im Falle eines Fehlers beim Löschen oder beim Schreiben einer Datei der oben gezeigte Dialog erscheinen und dort müsste dann eben noch die Möglichkeit rein das Benutzerkonto zu wechseln.
private Nachricht | Beiträge des Benutzers
Jelly
myCSharp.de - Member



Dabei seit:
Beiträge: 1127
Herkunft: Burden (Luxemburg)

beantworten | zitieren | melden

Ich denke diese Vorgehensweise wäre optimal. Ich seh zumindest momentan kein Szenario, das dem widersprechen würde.
private Nachricht | Beiträge des Benutzers
DeadEye
myCSharp.de - Member



Dabei seit:
Beiträge: 55
Herkunft: Vienna

beantworten | zitieren | melden

Wäre es da nicht eigentlich Möglich aufgrund der Impersonifikation die Anmeldedaten des dafür benutzten AdministratorKontos mitzusniffen?
Languages: C#, C, C++, Java, VB, PHP, ASP, HTML/XHTML, XML, CSS, JavaScript.
learning since: 1996
IDE's: Visual Studio 2008 Team Editon, Eclipse, Sharpdevelop / Monodevelop
private Nachricht | Beiträge des Benutzers
EvilMM
myCSharp.de - Member

Avatar #avatar-2859.jpg


Dabei seit:
Beiträge: 324
Herkunft: Karlsruhe

Themenstarter:

beantworten | zitieren | melden

Wie was?
private Nachricht | Beiträge des Benutzers