Autor Beitrag
Tonix
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 07.03.09 12:16 
Hallo
ich habe ein Frage
und zwar soll eine Datei die ich durch eine exe erstellt beim Systemstart automatisch Aufgerufen werden.
Deshalb möchte ich sie durch das Programm in die Regitry kopieren und zwar nach HKEY_LOCAL_MACGINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

hier wird die Datei erstellt
ausblenden C#-Quelltext
1:
using (StreamWriter sw = new StreamWriter("C:\\Dokumente und Einstellungen\\voigt\\desktop\\Meine_Datei.txt"))					

Wie ich die Datei nun in dieses Verzeichnis bekomme weiß ich leider nicht
Probiert hab ich es mit
ausblenden C#-Quelltext
1:
Registry.LocalMachine.					

aber ein brauchbares Ergebnis hab ich nie erhalten.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using Microsoft.Win32;


hat jemand ein Lösung für meine Problem oder weiß jemand wie ich eine Datei aufrufen kann OHNE sie in Autostart zu Verschieben. Das Programm sollte natürlich auch in der Lage sein das Auszuführen, denn der Eintrag soll nur durch das Programm erfolgen.

danke im Vorraus
mfg Tonix
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 12:29 
user profile iconTonix hat folgendes geschrieben Zum zitierten Posting springen:
und zwar soll eine Datei die ich durch eine exe erstellt beim Systemstart automatisch Aufgerufen werden.
Deshalb möchte ich sie durch das Programm in die Regitry kopieren und zwar nach HKEY_LOCAL_MACGINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Du meinst du möchtest den Dateinamen und Pfad dort eintragen? ;-)

user profile iconTonix hat folgendes geschrieben Zum zitierten Posting springen:
Wie ich die Datei nun in dieses Verzeichnis bekomme weiß ich leider nicht
Das ist kein Verzeichnis sondern ein Registryschlüssel. Und dir sollte klar sein, dass du für den Zugriff auf HKEY_LOCAL_MACHINE Administratorrechte brauchst. Deshalb würde ich eher HKEY_CURRENT_USER empfehlen.

user profile iconTonix hat folgendes geschrieben Zum zitierten Posting springen:
Probiert hab ich es mit
ausblenden C#-Quelltext
1:
Registry.LocalMachine.					

aber ein brauchbares Ergebnis hab ich nie erhalten.
Was hast du denn damit probiert? Erstmal fängst du ja so an:
ausblenden C#-Quelltext
1:
2:
3:
RegistryKey MyKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run");
if (MyKey != null)
  ...
An der Stelle hast du dann den Schlüssel geöffnet und kannst deinen Wert hineinschreiben. Mehr dazu findest du in der Dokumentation:
msdn.microsoft.com/e....win32.registry.aspx
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 07.03.09 13:34 
Ich empfehle, auf den Eintrag in der Registry vollständig zu verzichten. Wenn Du als Pfad für eine solche Datei Environment.GetFolderPath(SpecialFolder.CommonApplicationData) oder LocalApplicationData angibst, kannst du die Suche Windows überlassen. Jürgen
Tonix Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 07.03.09 22:49 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Du als Pfad für eine solche Datei Environment.GetFolderPath(SpecialFolder.CommonApplicationData) oder LocalApplicationData angibst, kannst du die Suche Windows überlassen. Jürgen


So ganz versteh ich das nie
wo kann ich es damit erreichen das die Datei automatisch beim Start geöffnet wird?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 07.03.09 23:06 
Ich vermute er hat das verwechselt mit der Speicherung des Pfades zu einer gespeicherten Datendatei oder so. Solch eine Datei wäre natürlich in den Anwendungsdaten gut aufgehoben.
Den Zusammenhang mit dem Thema habe ich vorhin jedenfalls auch nicht verstanden, aber ich denke einmal, dass er dazu noch etwas sagen wird. ;-)
Tonix Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 08.03.09 00:53 
Und wie trage ich die Werte ein?
mit WriteLine?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 03:39 
Hast du eigentlich einmal in die Doku geschaut? Oder im Codeeditor geschaut welche Befehle es überhaupt gibt?

WriteLine gibt es in RegistryKey nicht, dafür SetValue, wie dir die Liste der Methoden zeigt:
msdn.microsoft.com/e...strykey_methods.aspx
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: So 08.03.09 10:49 
Hallo,

vielleicht habe ich die Frage falsch interpretiert. Ich hatte das Problem vor allem darin gesehen, dass die Datei sicher erkannt und gefunden wird.

Eine Datei, die fest für ein Programm benutzt werden soll, kann doch eine Namen erhalten, den sich das Programm selbst ausdenkt und merkt. Wenn eine solche Datei in dem von mir genannten Verzeichnis CommonApplicationData gespeichert wird, ist sie eindeutig identifizierbar und kann automatisch (beim FormClosing) gespeichert und (bei FormLoad oder in program.cs) geladen werden.

Hinweis wegen der geäußerten Zweifel an meiner obigen Antwort: Ich habe noch niemals eine Datei in der Registry gespeichert, sondern immer nur einen Dateinamen. Meine Antwort sollte darauf hinweisen, dass auch das unter NET nicht erforderlich oder sinnvoll ist.

Wenn das Problem dagegen im "Öffnen" oder "Ausführen" oder "Laden" besteht, dann gilt meine Antwort natürlich nur insoweit, dass damit der Fundort der Datei geklärt ist. Was und wie damit gearbeitet werden soll, ist natürlich eine ganz andere Frage, die aber mit der Registry nach meinem Verständnis nichts zu tun hat.

Jürgen
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 11:13 
Es geht um keines der von dir genannten Themen. ;-)

Es geht einfach nur darum, dass die Datei beim Start des Rechners aufgerufen werden soll.
user profile iconTonix hat folgendes geschrieben Zum zitierten Posting springen:
und zwar soll eine Datei die ich durch eine exe erstellt beim Systemstart automatisch Aufgerufen werden.
Deshalb möchte ich sie durch das Programm in die Regitry kopieren und zwar nach HKEY_LOCAL_MACGINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Das Kopieren ist zwar der falsche Begriff, aber trotzdem war mir ja klar was gemeint ist, insbesondere bei dem genannten Registryschlüssel.

Wenn das Öffnen durch das Programm selbst geschehen soll, dann wären da sicherlich noch die Anwendungsdaten oder so als Speicherort sinnvoll, aber das ist ja ein Nebenproblem. In den entsprechenden Registryschlüssel eingetragen werden muss so oder so etwas.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 16:16 
Es ist nicht so sinnvoll per PN zu fragen, weil spätere Leser des Threads davon dann nichts haben. ;-)
Außerdem wirst du auch vielleicht schneller eine Antwort bekommen, weil auch andere antworten können.
user profile iconTonix per PN (Ausschnitt) hat folgendes geschrieben:
mit RegistryKey MyKey = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); öffne ich den Key soweit ist mir das klar
einen SubKey muss ich doch ansich nicht erstellen, oder, denn ich will ja das die Werte dirket in RUN eingetragen werden.
Als Wert muss ich doch nur den Pfad der Datei eintragen dich beim Start geöffnet werden soll
und das versteh ich leider gar nicht
wie kann ich mit SetValue die Pfad als Wert eintragen??
Auch wegen deinem Nachsatz:
Es gibt bei Microsoft die oben bereits verlinkte Dokumentation, die ziemlich gut sortiert ist. Sehr oft sind auch Beispiele dabei, so auch in diesem Fall:
msdn.microsoft.com/e...ibrary/2kk9bxk9.aspx

Für dich sieht das dann also so ungefähr aus:
ausblenden C#-Quelltext
1:
2:
3:
RegistryKey MyKey = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"true);
if (MyKey != null)
  MyKey.SetValue("Meine coole Autostartdatei"@"c:\test.txt");
An Stelle der Datei musst du natürlich die Datei eintragen, die du meinst. Ggf. kannst du auch deine eigene Exe dort angeben mit dieser Datei als Parameter, je nachdem was du möchtest.
Tonix Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 08.03.09 17:22 
Ok soweit isses mir jetzt klar
aber trotz dem Nutzung von CurrentUser sagt mir VisualC# das ich keine Rechte hab obwohl ich Admin bin
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19338
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.03.09 17:26 
Hast du auch das true in der ersten Zeile in OpenSubKey ergänzt wie in dem neuen Quelltext von mir? Sonst wird die Registry nämlich nur zum Lesen geöffnet, das ist mir erst vorhin aufgefallen als ich für den Link nochmal in die Doku geschaut habe. ;-)
Tonix Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 08.03.09 17:33 
vielen vielen Dank
bisten Held^^

mfg tonix