Java + Uprawnienia Administratora

0

Witam. Mam do napisania pewną aplikację, w której jedną z funkcji jest zapisywanie plików na dysk. Problemem jest jeśli chce zapisać pliki na dysku systemowym np. w Program Files. Wtedy wymagane są prawa administratora. Z tego co już zdąrzyłem się dowiedzieć, nie da rady zmienić uprawnień w czasie trwania procesu. Dlatego metoda do kopiowania plików miałaby się odpalić w nowym procesie z uprawnieniami administratora(odpalanie od razu całej aplikacji z uprawnieniami admina nie wchodzi w grę) i niestety nie znalazłem fajnego sposobu, aby uruchomić ten proces używając wyłącznie javy, tylko używając natywnych języków typu C, C++, ale to trochę nie wygodna sprawa. Proszę o rady. Jeśli za mało informacji to proszę pytać.

0

Rozumiem ze jako zwykly user probujesz zapisac do katalogu do ktorego nie moze zapisac nikt poza adminem, i chcesz to obejsc? Gratuluje myslenia. Nie widzisz jaka to by byla luka w systemie, jesli tak latwo byloby to obejsc? Ten drugo proces do kopiowania uruchomisz domyslnie jako ten sam user co ten pierwszy proces, wiec i on rowniez nie zapisze. Start nowego procesu jako admin pewnie zapyta o jakies haslo czy inny badziew do elewacji uprawnien.

0

Nie chce tego obejść... Chcę, aby można było za pomocą Javy wywołać nowy proces, który uruchomi się tylko wtedy kiedy, administrator się na to zgodzi.

0

Trochę na około, bo wymaga kombinowania na każdy z systemów osobno.

Runtime.getRuntime().exec("runas /user administrator echo dupa")

Odpala proces "na chama" jako administrator. Po unixami zamiast runas jest sudo.

0

Niestety u mnie to nie działa. Nawet nie mogę uruchomić z cmd czegoś poprzez runas. Wpisuje poprawne hasło i wywala, że nazwa użytkownika lub hasło są niepoprawne. Próbowałem na innym koncie gdzie nie mam hasła to wywala, że nie może być pustego hasła. Próbowałem kodu znalezionej na jakiejś stronce. Różne kombinacje mojej nazwy użytkownika z domeną i dalej żaden proces nie chce mi się uruchomić:

 
            String  commands [] = new String [] {
                "CMD.EXE",
                "/C",
                "RUNAS /profile  /savecred /user:"
                + "ADMINISTRATOR"
                + " " + "regedit.exe"
            };

        Runtime.getRuntime().exec(commands);
0

Cos mi swita ze pod windowsem trzeba bylo specjalnie ustawic gdzies, zeby mozna bylo zrobic runas. Jesli pierdziele glupoty to z gory przepraszam.

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