Roznice przy ruchamianiu programu przy starcie systemu Autostart/Rejestr?

0

Napisalem program, ktory monitoruje otwarte URLe przegladarek internetowych. Adresy te zapisuje do pliku xml. Nie ma zadnej Form - dziala tylko proces. Chce uruchamiac program przy starcie systemu. I tu dziwna sprawa. Nie chcialem uzywac Autostartu, gdyz wiadomo - kazdy sobie moze zobaczyc co w nim jest. Umiescilem wiec zapis w rejestrze. I teraz jest tak - Program i z zapisu w rejestrze i z autostartu uruchamia sie przy starcie systemu. Ale gdy uruchamiam program z rejestru - nie zapisuje danych do plikow xml. Gdy z autostartu - dziala jak powinien.
Skad ta roznica i jak ja wyeliminowac - tak zeby program poprawnie dzialal uruchamiany z rejestru?

0

Nie chcialem uzywac Autostartu, gdyz wiadomo - kazdy sobie moze zobaczyc co w nim jest.

W rejestrze też może zobaczyć. I pod msconfig może zobaczyć, i pod HijackThis... dlaczego chcesz coś w autostarcie ukrywać? Trojana piszesz?

0

A gdzie znajduje się ten plik xml?

0

Masz w tym programie jakies logowanie exceptionow, czy cos w tym guscie? Moze nie mozesz z jakiegos powodu otworzyc/stworzyc pliku bo np nie masz uprawnien

0

Juz rozwiazalem sobie problem. Mialem dodatkowy plik tekstowy, z ktorego program czytal sciezki, gdzie ma zapisywac xml -e. I ten plik byl w katalogu wraz z programem. Okazuje sie, ze uruchomienie programu 'z pliku' dobrze wspopracowalo z plikiem z ustawieniami startowymi. Nie dzialalo z rejestru. Dopiero kiedy w programie wskazalem konkretne polozenie pliku ustawieniowego - wszystko hula jak ta lala. Czyli mialem w programie:

string szSrcLine;
ArrayList szContents = new ArrayList();
FileStream fsInput = new FileStream(@"startspy.set", FileMode.Open,
FileAccess.Read);
StreamReader srInput = new StreamReader(fsInput);
while ((szSrcLine = srInput.ReadLine()) != null)
{
// dołączanie do tablicy
szContents.Add(szSrcLine);
}

i to nie wystartuje z zapisu w rejestrze. Po zmianie na:

string szSrcLine;
ArrayList szContents = new ArrayList();
FileStream fsInput = new FileStream(@"C:\Windows\startspy.set", FileMode.Open,
FileAccess.Read);
StreamReader srInput = new StreamReader(fsInput);
while ((szSrcLine = srInput.ReadLine()) != null)
{
// dołączanie do tablicy
szContents.Add(szSrcLine);
}

Jest OK.

0

A przy okazji. Poradzilem sobie z wszystkimi przegladarkami poza Chrome. Nie wiem jak pobrac otwarty Url chroma. Wiecie moze?
Sa co prawda w sieci porady - ale mowia o starszych wersjach Chrome. Podobno w 2014 cos sie zmienilo i teraz stare metody nie dzialaja.

Zrobilem tylko pobieranie nazwy okna - co nie jest rozwiazaniem doskonalym:

    public void DropChrome()
    {
        generateXML gXML = new generateXML();
        if (File.Exists(chrome_file) == true)
        {
            try
            {
                Process[] procsChrome = Process.GetProcessesByName("chrome");
                foreach (Process chrome in procsChrome)
                {
                    // the chrome process must have a window
                    if (chrome.MainWindowHandle != IntPtr.Zero)
                    {
                        gXML.createNode(chrome_file, "CHROME", chrome.MainWindowTitle);
                    }
                }
            }
            catch
            {
                return;
            }
        }
        else
        {
            gXML.CreateXML(chrome_file, "CHROME");
        }
    }
0

pewnie w rejestrze umieściłeś program w gałęzi LOCAL_MACHINE zamiast CURRENT_USER co wpływa na użyte do uruchomienia procesu konto użytkownika, a zatem na uprawnienia do konkretnych ścieżek na dysku..

1 użytkowników online, w tym zalogowanych: 0, gości: 1