Von der Konfiguration und der Nutzung bei uns nicht nutzbar.
Daher Backup/Klonen
Hallo zusammen,
wir wollen für Visualiserungszwecken ein Tablet mit Android 11 oder höher einsetzen.
Das Einrichten des Tablets dauert ca. 3-4h.
Da wir 10-15 dieser Tablets pro Monat benötigen und es dabei zu falschen und/oder fehlenden Einstellungen kommen kann, bin ich auf der Suche nach einer Möglichkeit einen Clone zu erstellen und diesen dann auf die anderen Geräte zu restoren.
Hat jemand da Tipps oder Tools oder Tutorials oder ...?
Danke
Hall Abt,
die 5234123423 funktionieren alle nicht, das PowerShell noch weitere Rechte und sonstiges braucht, was wohl mit den Lösungen und Tipps aus dem Netz nicht funktionieren.
Was ich festgestellt habe ist, dass WMI, Windows Police und Network Credentials zusätzlich benötigt werden.
Daher schaue ich jetzt man nach einem anderen Weg die alten "Batches" in C# zu bringen.
Dachte, es ginge "einfacher".
Hallo zusammen,
für das Installieren und Updaten meines Programms nutze ich InnoSetup.
Soweit ist alles ok. Nun hat sich eine Datei vom Namen her geändert und ich möchte beim Update diese Datei löschen,
damit diese nicht weiterhin in der alten Version abliegt.
Hat jemand einen Tipp, wie ich prüfe, ob die Datei vorhanden ist und wie ich sie dann löschen kann im InnoSetupScript?
Danke.
Hallo zusammen,
auf den Laptops unserer Produktion läuft ein Tool von uns.
Nun hat die IT die Adminrechte eingestellt und in dem Tool rufen wir einen Prozess auf, welche in CMD ein Kommando ausführt.
Der Adminzugang ist mir bekannt, und ich würde daher gerne CMD mit Adminrechten starten und der Rest bleibt unangetastet.
Wir kann ich nun die Einlog-Daten, welche beim Starten eines Prozesses mit 'startInfo.Verb = "runas";' ausgeführt wird, mitgeben.
Sprich, das Popupfenster zur Eingabe der Daten soll nicht kommen, sondern vorrangig schon "asgefüllt" werden.
Hat da jemand einen Tipp für mich? Funktioniert dies? Alternative die CMD-Befehle in C# zu übernehmen ist aktuell von Zeitaufwand
noch nicht gewünscht (außer meine Idee funktioniert nicht).
Danke
Hallo zusammen,
es gibt ja diverse Tools, welche ein Programm, das eigentlich installiert werden will, portable zu machen.
Im Grunde funktioniert dies auch soweit mit diesen Tools (Ceedo und Cameyo getestet).
Einen Nachteil haben diese portable Version dann, dass man keine Übergabeparameter/Argumente mitgeben kann.
Kenn jemand ein Tool, dass eine vollwertige portable Version generieren kann?
Ich hab mir mal selbst die Arbeit gemacht und in einer VM das Verzeichnis der installierten Version kopiert und alle
fehlenden Dateien (DLL) von Hand reinkopiert.
Programm läuft, Aufwand was 10 min.
Bei einem 2. Programm funktioniert dies jedoch nicht, da diverse Files im System angemeldet werden müssen (.ocx).
Danke
Ups, das war untergegangen. Ja, damit funktioniert es. Danke
Warum aber kein Exception kommt, wundert mich immer noch. Egal...
Korrekt. Die Dateien können schonmal 1GB und mehr werden.
Da bin ich ganz der Meinung von Abt.
Ungeachtet dessen hab ich das Gefühl, dass Read Only hier mich nervt.
Hier mal der komplette Code:
FileStream fsDest = new FileStream(destination, FileMode.Create);
FileStream fsSource = new FileStream(source, FileMode.Open);
int readByte;
byte[] bt = new byte[1048756];
while ((readByte = fsSource.Read(bt, 0, bt.Length)) > 0)
{
fsDest.Write(bt, 0, readByte);
}
fsDest.Close();
fsSource.Close();
Mit Haltepunkt auf Zeile 2 und mit "F11" weitergehen, springt er direkt auf die letzte Zeile, wenn Read Only gesetzt ist.
Ich schnall das echt nicht...
Hallo zusammen,
ich möchte gerne eine Datei mit dem Befehl
FileStream fsSource = new FileStream(source, FileMode.Open);
öffnen.
Markiere ich die Datei als "Read only" führt das Programm diesen Befehl nicht aus.
Das Verhalten ist irgendwie "komisch", ich kann es nicht anderes schreiben.
Bedeutet, der Befehl wird übersprungen, da es keine Fehlermeldung und nix kommt.
Wenn ich einen Haltepunkt setze, wird die Zeile auch jedenfall bearbeitet, aber das wars.
Wenn ich die Datei auf "Read/Write" stelle, funktioniert es einwandfrei.
Hat jemand irgendeine Idee oder einen Hinweis, was ich noch machen könnte?
Danke
Mir ging es nur um das Rausfinden des Buttons, der die Aktion ausgelöst hat und diesen zu ändern.
Dies wurde beantwortet und funktioniert, danke.
Der Rest den beiden Forms war als Anschauungsbeispiel und alles was dazu gehört läuft ja einwandfrei, wie geschrieben 🙂
Nein. Meine Frage hat nix mit Kommunikation zwischen Forms zu tun...
Der Button wird per Laufzeit generiert. Es sind 20 und mehr Buttons auf dem 1. Form.
Ich will den Button, der geklickt wurde seinen Text ändern. Da diese erst erstellt wird, kenne ich ihn beim Programmierung noch nicht.
Wie kann ich also den Text von diesem Button ändern, sprich wissen, welcher Button von den ganzen generierten nun der ist, welcher geklickt wurde?
Nein, das hat mit meiner Frage leider nix zu tun....
Hallo zusammen,
ich erstelle zur Laufzeit anhand von Einträgen in einer Konfiguration Buttons auf einem WinForm in einem Panel.
Das funktioniert alles sehr gut.
Beim Click-Event jeden Buttons starte ich eine 2. Winform, wo Einstellungen für den jeweiligen Eintrag erfolgen können.
Beim Schließen des 2. Forms soll der Text des Buttons, welches vorher angeklickt wurde, sich ändern.
Habt ihr eine Tipp für mich, wie ich das am besten anstellen kann?
Danke
Hallo zusammen,
bin auf der Suche nach Vorlagen oder Tipps zu folgender Umsetzung:
Es liegt eine Datei vom Hersteller eines Transfertools, welches Daten auf einen Controller überträgt vor.
Diese Datei beinhaltet diverse Einträge. Diese werden händisch gemacht, z.B. die Namen der Sourcedateien,
die Versionen, die Konfig-Dateien, etc.
Nun möchte ich ein Art Template erstellen, welches mit Variablen versehen wird und die Versorgung dieser Variablen wird
durch mein Programm ausgefüllt. Somit können die Auswahlmöglichkeiten besser verwaltet werden.
Danach werden die Platzhalter im Template ersetzt und das File gespeichert.
Beispiel aktuell:
Version := v01.01.00
File_Main := main.srr
File_Config := config.cc
.....
Beispiel neu:
Version := {VER}
File_Main := {MAIN}
File_Config := {CONFIG}
....
Kennt jemand da was oder kann mir einen Tipp geben?
Danke schön
Hallo zusammen,
irgendwie stelle ich mich wohl doof an ...
Ich hab eine DLL als Verweis in mein Projekt integriert. Wenn ich das Projekt kompiliere, dann erwartet das Programm die DLL immer im gleichen Verzeichnis.
Ich würde diese gerne in einem Unterordner ablegen.
Wie stelle ich das an?
Visual Studio Pro 2017
C# Projekt
Danke.
Ja, für reine SW, welche DevOps unterstützen gerne.
Für diese SW leider nicht. Basiert zwar auf Ansi C aber das Compilieren funktioniert in DevOps nicht.
Die Zeit dass dann irgendwann lauffähig zu bekommen steht in keiner Relation zum Nutzen.
Für mein Tool hab ich jetzt einen Tag gebraucht und bis auf diesen "Fehler" läuft es.
Mit einer Wartezeit dazwischen funktioniert es auch super.
Kann das sein, dass Du hier etwas baust, das eigentlich ein Release System automatisch machen sollte..?
Nicht ganz. Für die Microcontroller in der Produktion benötigt es die neuste SW.
Dies wird von der Entwicklung in ein ZIP-File abgelegt. Will das Mail-System durch ein kleines Programm
ersetzen, dass die neuste Version aus dem Netzwerk auf die IB-Laptops lädt.
Hier mal mein Code.
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
if (Directory.Exists(path + "Release\\"))
Directory.Delete(path + "Release\\", true);
if (Directory.Exists(path))
{
string NewReleasePath = path + "Release\\" + FolderNameVersion + "\\" + FolderNameRelease;
File.Copy(ReleaseZIPName, NewReleasePath + "CopyRelease.zip", true);
Directory.Move(NewReleasePath, ProgramConfig.AppPath + "\\" + FolderNameRelease);
}
Vielleicht hab ich ja einen Denkfehler drin, fall es nix mit Abt seine Info zu tun hat.
Danke
Nein. Bis jetzt hatte ich dies auch nicht.
Aber auf einem "alten" Rechner (von 2017) bekomme ich immer ein Zugrifffehler, dass das Verzeichnis nicht da ist.
Ich hab mal aus "Langeweile" eine Wartezeit reingemacht und dann läuft es.
Das ist aber unsauber 🙂
Ich teste mal deinen Vorschlag. Danke
Hallo zusammen,
es kommt manchmal vor, dass bei nutzen des Befehls "Directory.CreateDirectory" die Funktion danach nicht ausgeführt wird und ein Fehler kommt, dass das Verzeichnis nicht exisitiert.
Insbesondere wenn ein System mit "alter" HDD (nicht SSD) eingesetzt wird.
Frage:
Gibt es eine Möglichkeit auf Beendigung der Verzeichniserstellung zu warten?
Danke
Hallo zusammen,
gibt es eine Möglichkeit den Netzwerk Adapter Name per C# zu ändern?
Die Daten auslesen kann ich ohne Probleme, aber ändern leider nicht.
Über die Registry ist das fast nicht möglich, da der Zugriff über diese Hex-Nummer
nur möglich ist und das ist nicht überall nutzbar.
Mit Powershell würde es ja gehen, aber das mag ich nicht verwenden.
Get-NetAdapter -Name "Old Name" | Rename-NetAdapter -NewName "New Name"
Danke für ein paar Tipps.
Hallo zusammen,
beim installieren einer Bibliothek von einem 3. Anbieter kommt die Meldung, dass .Net Framework 3.5 zu installieren ist.
Ich habe aber 4.72 installiert.
Gibt es mit 3.5 irgendwas, dass mit 4.7 entfernt wurde?
Kann ich dem Installprogramm irgendwie sagen, dass 3.5 bereit ist, da alles in 4.7 integriert ist?
Was gibt es noch zu beachten, oder was kann ich noch machen?
Danke
Hallo zusammen,
ich möchte gerne einen Eintrag in der Registry auswerten. Das funktioniert.
Wenn jedoch der Eintrag nicht vorhanden ist, dann bekomme ich eine null Exception.
Diese möchte ich gerne auswerten, ohne das er in einen Fehler geht (try...).
if (targetRegistryKey.GetValue(registryEntry).ToString() is null)
return false;
return true;
Das funktioniert nicht. Möchte jetzt aber nicht im catch-Teil meine weitere Programmierung umsetzen.
Vielleicht gibs was anderes, mit dem ich Einträge in der Registry nutzen kann und wenn diese nicht da sind ich keine null bekomme?!
Danke für eure Tipps.
@Tisdo: Ja das hatte ich auch mal aktiv. Schütz vor Viren und Trojaner recht gut auch vor Änderungen.
Aber in diesem Fall gehen Logs verloren. Ich hab noch nirgends Infos gefunden, wo man diverse Verzeichnisse davon ausnehmen kann.
Ja, IPC = Industrie PC
Leider ist das nicht so einfach, da die Programme, welche diverse Aktionen durchführen, ziemlich "zickig" sind und eine gewisse Bedienung durch den Benutzer leider nur mit gleichen Rechten laufen.
Hallo zusammen,
bei unseren Maschinen liefern wir einen IPC mit. Leider schafft es der ein oder andere Benutzer in der Nachschicht aus Langeweile auf diesem IPC "rumzuspielen". Irgendwann funktioniert nix mehr und
die Instandhaltung braucht teilweise "ewig" bis das System wieder läuft.
Meist sind diverse Einstellungen (IP-Adresse, Verzeichnisse auf der Platte, Routings...) verstellt/gelöscht.
Ich suche jetzt ein Programm, welches beim Neustart des Systems (Win10) alle Einstellungen prüft und nach einer Vorgabe wieder zurückstellt.
Gibt es da was, oder eher selbst programmieren?
Danke.
Hallo,
wir liefern Maschinen mit einem IPC aus. Darauf sind div. Lösungen von uns installiert.
Der Produktion übergeben wir ein Image, dass sie installieren soll.
Dies basiert auf Win10 2016 LTSB.
Darauf haben wir die Netzwerkeinstellungen feste zugewiesen, da die Steuerungen kein DHCP unterstützen.
Jetzt hab ich ein Problem, da Windows beim Erkennen einer anderen Mac-Adresse als beim Erstellen des Images den Adapter neu anlegt. Heißt, dass alle Netzwerkeinstellungen weg sind.
Weiterhin vergeben wir jedem Port (insgesamt 4) einen Namen, damit Service-Techniker später wissen, welcher Port was bedeutet. Auch dies ist weg. In der Übersicht steht dann "Ethernet", "Ethernet 2", "Ethernet 3","Ethernet 4".
Wenn nun die Produktion den Namen und die IP-Adresse anpassen möchte, kommt immer ein Fehler, dass der Name und die Adresse schon vergeben ist.
In der Registry habe ich den Eintrag für die Namen gefunden. Im HW-Manager finde ich unter ausgeblendete Geräte alle Geräte, so dass ich ins. 8 Geräte dort stehen habe. Die versteckten kann ich deinstallieren.
Nun würde ich das "automatisieren", sprich, dass ein Tool die 4 versteckten Treiber deinstalliert, die Namen aus der Registry löscht und die 4 erkannten mit Name und IP-Adresse richtig zuweist.
Frage:
Gibt es ggf. eine Bibliothek, welche diese Zugriffe erleichtert?
Kennt jemand ggf. ein Beispiel, das ich mir mal anschauen könnte?
Wie würdet ihr das Umsetzen? -> Er muss etwas sein, dass für kommerzielle Zwecke erlaubt ist.
Danke für ein paar Tipps.
Einwandfrei.
Ja, Benutzername und Loginname sind für mich 2 Unterschiedliche.
Aber das mit UserPrincipal hat funktioniert, so wie ich es will.
Danke
Das Format ist doch:
Domain\User
Splitte doch nach dem Backslash?
Ja, aber der Domain Username ist kryptisch 😃
Trotzdem erscheint später dann der korrekte Name, bzw. beiden.
Wenn ich auf Account gehe sehe ich:
Nachname, Vorname
Domain/LoginName
Den Login-Name lese ich dann leider immer mit dem genannten Befehl aus 😦
Hallo zusammen.
Ich würde gerne unter Windows 10 den Benutzername auslesen.
Mit Environment.Username erhalte ich den Netzwerk Benutzername.
Wenn ich aber unter Win10 auf das Symbol im Taskmenü mit der Maus fahre (über dem Zahnrad), dann erscheint dort der reale Name.
Wie kann ich diesen in C# erhalten?
Ich finde bei der Suche immer nur die oben genannte "Lösung".
Danke!
Nicht nur in Deutschland ist das so 😃
Ja, wie schon von mir geschrieben, sehe ich das alles auch so, aber es ist nun mal nicht möglich.
Mich würde der Prozess da hinter interessieren.
Wie und wo sichert sich Windows die Einstellungen für den Adapter?
Kann ich ggf. die Zuweisung per MAC umstellen auf Treiberbasiert?
Kann man ein Script/Programm aufsetzen, dass das kann?
Danke
Hallo.
Wir haben hier für den Ethernet Zugriff mehrere D-Link USB-Adapter zur Verfügung.
Die 2in1 Tablets/Notebooks haben leider keinen "richtigen" Netzwerkstecker mehr.
Wenn ich nun einen Adapter einrichte, um nicht per WLAN großen Datenmengen in Netzwerk zu schieben, ist alles ok.
Wenn ich fertig bin, lege ich den Adapter in den Pool zurück.
Beim nächsten Mal erwische ich nicht exakt den selben Adapter.
Wenn ich den nun einstecke, ist meine vorherige Einstellung "weg".
Sprich, ich muss IP-Adresse und Standardgateway wieder neu eintragen.
Sobald ich den selben Adapter wieder erwische, sind alle Einstellung korrekt.
Auch wenn es immer der gleiche Adapter von D-Link ist, scheint Windows die Adapter anhand der MAC-Adresse zu unterscheiden.
Gibs einen Trick oder eine Einstellung, dass Windows dies nicht interessiert und nur der Typ des Adapters (D-Link DUB 1312) wichtig ist?
Kann ich noch was anderes machen?
Wir haben hier 14 Adapter in der Firma und ich finde das nervig.
Und nein, wir haben kein DHCP und nein, die IT wird das nicht einführen.
Und nein, ich weiß nicht warum und es interessiert mich auch nicht 😃
Danke für eure Tipps.
Bei dem Team sind die Köpfe nicht umstellbar 😃
Leider
Nein, leider nicht. MatLab funktioniert nicht richtig und die Entwickler lehnen eine Cloud basierte Lösung ab, da die Funktionen in MatLab teilweise auch durch Patente geschützt dort dann "offen" wären.
Sorry, eine Info vergessen, welche einen Build Server ausschließt.
Die Systeme sind unterschiedlich, sprich dass die Source Codes teilweise so speziell sind, dass sie nur mit den Tools des Lieferanten funktionieren.
Bedeutet, dass das fertige Compilat nur durch das Tools selbst erstellt werden kann.
Das bereitet mir Kopfzerbrechen.
DevOps kann das nicht, GITxxx kann das nicht, Atlassian kann das nicht...
Daher liefert jedes Entwicklerteam seinen letzten Build ab und dann generieren wir das Master Image.
Hallo.
Wir haben hier mehrere Programme/Entwicklungen, welche jeweils von unterschiedlichen Teams betreut werden.
Jeder generiert ein Release und erstellt dazu auch Notes.
Nun wird eine gemeinsame Plattform eingeführt, welche in Zukunft alle Entwicklungen vereinen soll.
Damit bei dem "Master" Release dieser Plattform alle zu diesem Zeitpunkt gültigen Versionen in die Notes aufgenommen werden, suche ich ein Tool, dass dies für mich verwalten kann.
Folgendes:
Gibt es sowas? Hat da jemand Tipps?
Im Dokument soll dann später sowas stehen (Kurzversion):
Release der IPC Plattform v1.3.1
Beinhaltet folgende Applikationen:
App x1 v2.1.4 (gültig ab IPC v1.0.0)
App x2 v1.0.4 (gültig ab IPC v1.2.0)
App x3 v4.0.0 (gültig ab IPC v1.3.1)
etc....
Danke
Hallo.
Ich bin auf der Suche nach Tipps, Tricks und Tutorials zum oben genannten Thema.
Vorhaben:
Im Moment werden alle Apps im Haus mit einer Funktion im Programm zur Lizenzprüfung ausgestattet. Dabei "muss" im jedem Programm ein Lizenzschlüssel eingegeben werden.
Wenn wir nun mehrere Apps auf dem PC installieren, ist der Aufwand einfach zu hoch. Updates von dieser Funktion würde auch Einfluss auf alle Programme haben, etc. etc.
Meine Idee ist nun, dass ein lokaler Lizenzserver als Windows Service läuft und hier die Lizenzen geprüft werden. Die Lizenz wird als eine Lizenz erstellt mit allen Freigabe/Laufzeiten alles Programme, welche auf diesem PC laufen sollen.
Die Lizenz wird nicht mehr von Hand eingetragen, sondern per USB-Stick (später ggf. über Cloud) übertragen.
Die jeweiligen Apps fragen dann den Lizenzserver ab, ob eine Lizenz für sie vorhanden ist.
Das Prüfen im Programm erfolgt dann mit einer eingebundenen DLL, welche die Kommunikation mit der Server und das Prüfen alles handelt und das Ergebnis dann dem Programm mitteilt.
Vielleicht gibt es auch OpenSource Projekte oder sonstiges, wo ich mich anlehnen kann (muss ja nicht das Rad neu erfinden).
Danke für eure Tipps
Ja, bei 15.000 Mitarbeitern und 9.000 in der Entwicklung ist ein 20 Jahre alte Vorgehensweise noch "frisch" 😃
Ziel ist es die Email und den Name des angemeldeten Benutzer zu erfahren, um beim Erstellen von Produktfreigaben im Logfile dies abzulegen.
Der Windows Benutzer ist eine IT Nummer ohne Bezug. Unter Outlook erhalte ich halt diese Infos.
Es ist aber so, dass diese Erstellung auch erfolgen soll, wenn der Nutzer nicht online ist. Daher wäre eine "offline" Lösung gewünscht.
Und für mich ist es nicht logisch dass eine Anfrage an Outlook nur mit Adminrechten funktioniert.
Wie erhalte ich nun die Infos vom Nutzer?
Bin für jeden Tipp dankbar.
Hallo zusammen.
Mit folgendem Code kann ich die User-Daten aus Outlook auslesen, um diese später zu verwenden.
try
{
// Check whether there is an Outlook process running.
if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
{
// If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
}
else
{
// If not, create a new instance of Outlook and sign in to the default profile.
application = new Outlook.Application();
Outlook.NameSpace nameSpace = application.GetNamespace("MAPI");
nameSpace.Logon("", "", Missing.Value, Missing.Value);
nameSpace = null;
}
Outlook.Accounts accounts = application.Session.Accounts;
// Concatenate a message with information about all accounts.
// StringBuilder builder = new StringBuilder();
// Loop over all accounts and print detail account information.
// All properties of the Account object are read-only.
foreach (Outlook.Account account in accounts)
{
// The UserName property provides an account-based context to determine identity.
string[] OutlookName = account.UserName.Split('.');
AppVariable.ActiveUsername = OutlookName[0].ToUpper() + " " + OutlookName[1].ToUpper();
// The SmtpAddress property provides the SMTP address for the account.
AppVariable.ActiveEMailAddress = account.SmtpAddress;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
Wenn der User aber auf seinem PC keine Admin-Rechte hat, funktioniert dies nicht mehr.
Hat jemand einen Tipp, wie ich das auch ohne Adminrechte zum Laufen bekommen, bzw. wo liegt der "Fehler"?!
Vielen Dank
@david.m: Genau. Und das macht mir zu schaffen 😃 Aber habs mit der Sonderlösung jetzt im Griff. Unschön, aber läuft.
Hmmm, schade.
Ich kopiere jetzt das Consolen-Programm in C:\Temp\ und rufe es von dort immer auf. Läuft, aber unschön.
Wenn mein Programm geschlossen wird, lösche ich das Consolen-Programm in Temp wieder.
Die Idee von MarsStein wäre jetzt zu aufwendig, würde ich mir aber mal bei Gelegenheit anschauen.
Danke für eure Tipps.
Ok, vielleicht habe ich mich falsch ausgedrückt. Daher nochmal etwas detaillierter.
Ich befinde mich im Windows 10 CMD-Fenster. Mein Programm läuft nicht, VS läuft nicht. Der Cursor blinkt und wartet auf Eingabe.
Anzeige -> C:\
Ich schreibe: cd Test Pfad
Anzeige -> C:\Test Pfad\
Cursor blinkt hier.
Ich schreibe: consolenprogramm und drücke Enter
Es kommt die Meldung:
Fehler: Aufruf der internen Funktion zur Übertragung der Datei auf die Steuerung fehlgeschlagen. Grund: Der Aufrufpfad beinhaltet Leerzeichen, was nicht erlaubt ist.
Schreibe: cd.. + Enter
Schreibe: cd TestPfad + Enter (!!! Ordner hat KEINE Leerzeichen)
Schreibe: consolenprogramm + Enter
Programm läuft durch.
Das hat also nix mit meinem Code erstmal zu tun. Da ist was im Programm selbst, was dann nicht funktioniert.
Nun war die Frage, ob ich das unabhängig vom Pfad trotzdem starten kann, so dass das Programm meint, im Pfad ist kein Leerzeichen drin, obwohl es in so einen Pfad installiert wurde.
Kann man sowas über C# "vorgaukeln".
Den Rest verstehe ich ja 😃
Vielen Dank schonmal für eure Hilfe dazu.
> Punk 5, Fehler genau beschreiben.
Mit "Funktioniert nicht" kann niemand was anfangen.
Es kommt die Meldung vom Programm:
Fehler: Aufruf der internen Funktion zur Übertragung der Datei auf die Steuerung fehlgeschlagen. Grund: Der Aufrufpfad beinhaltet Leerzeichen, was nicht erlaubt ist.
Nein. Das Problem besteht auch, wenn das Programm direkt im CMD aufgerufen wird.
Pfad mit Leerzeichen funktioniert nicht.
Pfad ohne funktioniert.
Beispiel:
Win+R -> CMD -> Enter
CD Test Pfad
Consolenprogramm.exe
---> Funktioniert nicht
CD TestPfad
Consolenprogramm.exe
Funktioniert
Hallo.
Ein externes Consolen Programm wurde von mir in mein Projekt integriert und mit eure Hilfe hier im Forum optimal verwendet.
Jetzt ist es leider so, dass das Consolen Programm keine Leerzeichen im Programmpfad erlaubt. Da bei der Installation des Programms der Benutzer dies irgendwohin installiert wo sich Leerzeichen im Pfad befinden können (z.B. Program Files) hab ich somit ein Problem.
Frage:
Kann ich dem Consolen-Programm irgendwie den Aufrufpfad "vorgaukeln", dass es keine Leerzeichen darin gibt?
Jemand eine andere Idee?
Danke
Danke erstmal für eure Hilfen.
Der string war vorher auch ein stringbuilder. Beides hatte keine Auswirkung.
process.WaitForExit füllte den string auch nicht.
Im Grunde erhalte ich ja was, aber nur im Ausgabe-Fenster in VS nicht in meinen String rein.
Die beiden Events habe ich erstmal für mein Verständnis aufzubauen aus dem Beispiel im Link so verwendet.
Schieb die mal in eine eigene Methode. Melde mich dann wieder.
Danke
Ja, sicher weiß ich das. Macht mich aber nicht schlauer.
Mit dem DataReceivedEventHandler erhalte ich wohl jede Änderung in der Console und schreibe dies dann in den String.
Mit BeginOutputReadline stoße ich dies wohl an.
Wenn ich nun mit F11 durchschalte, dann wird erst beim Schließen meiner Anwendung in den String geschrieben, obwohl schon vorher die Console geschlossen ist.
Warum also schreibt er erst beim Beenden des Programms in den String und nicht beim Schließen des Consolenfensters?
Die TextBox hab ich rausgeworfen.
Hab aktuell folgenden Code drin:
Process process = new Process();
process.StartInfo.FileName = CmdCall;
process.StartInfo.Arguments = " -i" + IPAddress + " \"VERSION\" ";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.OutputDataReceived += new DataReceivedEventHandler((sender, e) =>
{
// Prepend line numbers to each line of the output.
if (!string.IsNullOrEmpty(e.Data))
{
output_console = output_console + "\n" + e.Data;
}
});
process.ErrorDataReceived += new DataReceivedEventHandler((sender, e) =>
{
// Prepend line numbers to each line of the output.
if (!string.IsNullOrEmpty(e.Data))
{
output_console = output_console + "\n" + e.Data;
}
});
process.StartInfo.CreateNoWindow = true;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
In meinem output_console string steht nix drin.
Lustigerweise jedoch im Ausgabe-Fenster von VS2017.
Was mache ich falsch? Wie bekomme ich die Daten in den String?