C# CMD Befehle ausführen , anmeldung als Admin automatisch

freak1051

Ensign
Registriert
Dez. 2012
Beiträge
197
Hallo Community,

Ich bin gerade dran für unsere Abteilung ein Tool zu entwickeln, mit dem ich Automatisiert die IP-Adresse einer Raspberry Pi ändern kann.

Die Raspberry Pi wird bei uns in einem ProfiNet/Ethernet Maschinennetzwerk als Spieglung einer HMI eingesetzt. Die Images haben Standart IP´s und müssen bisher mühevoll über Putty geändert werden.

Mein Grundgedanke war:

- SD Karte Einlegen
- extFS (oder ähnliche Programme) Silent ausführen, und ext4 Partition des Images automatisiert unter immer gleichen Laufwerksbuchstaben mounten
- über Eingabemaske IP/Subnet/Gateway eingeben und die etc/Network/Interfaces auf der ext4 Partition editieren.
- automatisiert entmounten.

Nach einem Schriftwechsel mit Paragon haben sie mir mitgeteilt, wie die CMD Befehle sind, um über die CMD eine SD karte zu Mounten mit ihren Treibern.

Hier liegt aber der Hund begraben. Gebe ich die Befehle in der CMD ein, will er einen erhöhte rechte. Wir haben einen Lokalen admin für solche Sachen... PW ist mi einem €-Zeichen... egal..die viel elegantere variante ist eh... CMD als Administrator ausführen. Uber die UAC kommt eine PW User und PW abfrage und gut ist.

Ich habe nun schon öfter im Netz nach Lösungsansätzen geschaut (ist kopiert, deshalb keine vernünftige Codevorschau mgl, sorry):


ProcessStartInfo proc = new ProcessStartInfo();
proc.WindowStyle = ProcessWindowStyle.Normal;
proc.FileName = myExePath;
proc.CreateNoWindow = false;
proc.UseShellExecute = false;
proc.Verb = "runas";


Nun kommt wieder die UAC abfrage. Diese Stört mich Tierisch... Ich will doch nur ne IP von de Rasperry ändern...
Trotz Whitelisten in unserer IT etc. klappen diese Befehle nur mit erhöhten Rechten ,da wir , so meint es Zumindest Windows und unser Server, in der Datenträgerverwaltung rumhantieren.

Nun habe ich mit meiner IT abgemacht, dass sie Mein Tool inkl. nötigen Anwendungen in einen andern Userkreis mit erhöhten rechten ziehen könnten. DANN hätte ich auch die Erlaubnis, Anmeldename und PW in Klartext in meinen Sourcecode zu schreiben, um mich beim Programmablauf automatisch als "admin" anzumelden.

Nun ist die frage, ob ich den bei Runas bediungungen mitgebenkann... ich denke so an runas -"pfuschadmin" - "MusterPW"
damit ich die CMD ohne Passworteingabe als admin ausführen kann.

wisst ihr da ne Möglichkeit... Und wenn es möglich ist, bitte nicht nur en code-Fetzen hinwerfen. Ich bin eigentlich SPS Programmierer und bin blutjunger Anfänger was Hochsprachen/C# anbelangt :)

viele grüße und Danke

Daniel
 
Bei runas als Parameter auch den Admin-User angegeben? Deine Anwendung hat auch ein entsprechendes Manifest hinterlegt, dass Admin-Rechte benötigt werden?
In C# scheinst Du ja die User-Credentials nicht auf den Admin umzuswitchen.
Ob das hilft UAC auszuhebeln weiß ich nicht.

Die Images haben Standart IP´s und müssen bisher mühevoll über Putty geändert werden
Wenn die Standards haben wieso muss man die dann ständig ändern? *kratz*
 
Warum möchtest du denn das Image bearbeiten, wenn du anscheinend im Nachhinein die IPs auch über Putty ändern kannst?
Dann automatisier doch lieber die Änderung der IP direkt auf dem Raspi, also über SSH. Das ist weniger ein Krampf als sich mit UAC etc. auseinanderzusetzen :D
Stichwort: https://github.com/sshnet/SSH.NET

Oder hab ich das falsch verstanden?
 
@ryan_blackdrago & @alxtraxxx : Die Standart IP´s funktionieren super, wenn wir unser Standard Maschinennetz nehmen. Bisher haben wir uns immer hinter einem Router versteckt, und Via Portforwarding unsere Maschinen ins Kundennetz gehängt. Mittlerweile ist es eigentlich überwiegend der Fall, dass unsere Kunden uns ALLE IP´s der Geräte angeben. Bei z.T. 100 ProfiNet Teilnehmer nicht unbedinge wenig Aufwand alles zu Vergeben. Zudem dass man im ProfiNet alle geräte Taufen muss.

DHCP: Unsere Anlagen mischen ProfiNET und Ethernet. Unsere CPU´s haben keine Möglichkeit einen DHCP-Server bereitzustellen. Zumindest nicht im Ethernet-Bereich. Profinet schauen die CPU´s auf den Profinet Name und vergeben dann die IP. Das geht mit Ethernet Geräten nicht. Es gab mal die Idee, einen DHCP Server einzusetzen, stieß aber bei unseren Kunden auf ...naja.."Lasst den Scheiß".

@ Shio: Putty automatisieren ist auch nicht das gelbe vom Ei... Wie gesagt bei z.T. weit über 100 Geräten, muss der Programmierer jedes mal die IP seines Ethernetadapters ändern. Wir verstecken uns hierzu in einer VM um die UAC unseren Laptops auszuhebeln. Sonst müssten wir bei jeder IP Änderung der Karte im Laptop den Lokalen Admin eingeben. Es muss schon oft genug die IP des Adapters geändert werden, um die Anderen Geräte zu Taufen/IP´s zu vergeben, da ist jeder froh, wenn hier Wegfällt. Zudem wird versucht so viel wie möglich am Schreibtisch vorzubereiten, da Arbeitszeit an der Anlage Teuer ist, da Wenn der Softi dran sitzt der Mechaniker eher ausgebremst wird.



alxtraxxx schrieb:
Bei runas als Parameter auch den Admin-User angegeben? Deine Anwendung hat auch ein entsprechendes Manifest hinterlegt, dass Admin-Rechte benötigt werden?
In C# scheinst Du ja die User-Credentials nicht auf den Admin umzuswitchen.
Ob das hilft UAC auszuhebeln weiß ich nicht.


Wenn die Standards haben wieso muss man die dann ständig ändern? *kratz*

Wo kann ich des einstellen, dass meine Anwendung Adminrechte benötigt. Bzw. eigentlich ist es NICHT gewünscht, dass die Anwendung Adminrechte benötigt. Aber Paragon ExtFS und deren Treiber/befehle fordern erhöhte rechte. Diese können von unserer IT nicht so einfach umgegangen werden, allerdings sehen sie kein Problem damit IN DIESEM FALLE sich automatisiert zu autorisieren. Und das ist mein Ziel. Ich will weniger die UAC bzw. die Anmeldung als Admin auszuhebeln, eher geht es darum, automatisiert sich "einzuloggen".
Ich versuche einen Vergleich zu ziehen: will ich Netzlaufwerke über die CMD Mounten, die einen Zugang benötigen sieht der Befehl wie folgt aus : net use H: \\Pfad1\Pfad2 ***PW*** /user:ABSGroup\Vorname.Nachname

somit melde ich mich automatisiert an und bekomme meine Laufwerke mit den zugehörigen rechten. So stelle ich mir des irgendwie auch vor. Ich Führe bei klick auf einen Knopf einen Befehl aus, den ich eigentlich in der CMD eingebe. Dieser Befehl will den lokalen admin... Hier würde ich Name+PW gerne automatisch eingeben. Damit der Bediener auf den Button Klickt, und nicht mal merkt, dass er jetzt gerade diese Aktion mit erhöhten rechten ausführt.

Zudem habe ich den Code soweit komplett Fertig, dass ich Die karte mounten kann, die IP´s vergeben und wieder entmounten. wäre da nicht dieses sch**** fenser, welches n lokalen admin will... DASS MUSS WEG!!!! :)
 
Zurück
Oben