Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 lis 2024, o 22:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 28 lut 2014, o 00:47 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Witam

Mam problem z dodawaniem klucz do rejestru, a mianowicie chcę dodać jakiś tam klucz do autostartu (domyślnie będzie to ścieżka mojej aplikacji) i robię to w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I kiedy ten kod dodam w evencie jakiegoś przycisku to wszystko działa idealnie, natomiast problem zaczyna się kiedy ten sam kod odpalam z funkcji main w programie konsolowym, wtedy klucz się nie dodaje (chyba że zamiast LocalMachine dam CurrentUser) oczywiście program uruchamiany z uprawnieniami administratora.

Nie wiem jak rozwiązać ten problem, a w internecie nic sensownego nie znalazłem dlatego mam nadzieję na pomoc od was.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 01:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sty 2013
Posty: 272
Pomógł: 3

A co się dzieje? Rzuca wyjątkiem czy nagle komputer się zawiesza? Troszkę informacji :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 02:26 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Nic, normalnie przechodzi to jedynie kiedy nie nadam uprawnień administratora to wyrzuca wyjątek. Najdziwniejsze jest to że z aplikacji foremkowej działa gdzie bym tego nie włożył.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 10:40 
Offline
Użytkownik

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

to nie win95 , tu musisz miec uprawnienia , np tak dodajesz przed
Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i w 4.0 , 4.5 assembly jakos innaczej sie zapisuje nie chcialo mi sie tego sprawdzac
msdn jest lepsze do takich pytań niz tu na forum ,



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 19:57 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Kurcze wszystko działa ale nie działa :D
Mianowicie kiedy skompiluję program jako 64-bitowy wszystko działa i klucz dodaje się do rejestru (nie trzeba dodawać uprawnień tak jak napisałeś wystarczy jako drugi parametr OpenSubKey podać wartość true) natomiast kiedy skompiluje jako 32-bitowy to wartość się dodaje ale jakby "niejawnie" czyli kiedy odczytuję ja z poziomu programu poprzez GetValue() to jest widoczna natomiast z normalnego przeglądu rejestru już nie.
Może ma ktoś co do tego jakieś sensowne wytłumaczenie, ponieważ program z założenia ma być uniwersalny?
Oraz dlaczego zapis do klucza CurrentUser działa normalnie na aplikacji 32-bitowej i jest widoczny w rejestrze.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 20:52 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 24 lut 2014
Posty: 16
Pomógł: 1

Dlatego pewnie że od Win7 mamy UAC i trzeba niestety pod 64bit pisać z nim w zgodzie, na 32 bitowych systemach niema tego problemu gdyż i ochrony żadnej też niema ani rejestru ani kont.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 21:53 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

Zauważyłem właśnie że klucze pod apką 32-bit dodawały się nie do podanej ścieżki tylko do HKEY_LOCAL_MACHINE\Software\Win6432Node\... więc czy istnieje jakiś sposób aby dodawało do określonej ścieżki, niby można na początku sprawdzać jaki jest system i wchodzić do określonej ścieżki ale to takie "ukraińskie" rozwiązanie.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 22:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8587
Pomógł: 337

Oczywiście że można , miałem to nawet opisać , ale chwilowo nie mam weny twórczej ... podobno piszę o kant :)

zainteresuj się tym :

http://social.msdn.microsoft.com/Forums ... arpgeneral


można też użyć manifestu by dostać pozwolenie ....
np dopisując w manifeście linijkę w elemencie <requestedExecutionLevel>

Składnia: [ Pobierz ] [ Ukryj ]
język xml
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale to tylko połowa sukcesu .... niemniej osadzenie manifestu w pliku exe spowoduje zawsze uruchomienie programu z z uprawnieniami administratora.

informacje szczegółowe znajdziesz tu: http://msdn.microsoft.com/en-us/library/bb756929.aspx

pamiętaj że w pliku manifest w tagu : requestedExecutionLevel

możesz sobie ustawić poziom trzech wartości :

Składnia: [ Pobierz ] [ Ukryj ]
język xml
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


poniekąd można tez ręcznie sprawdzać :

Składnia: [ Pobierz ] [ Ukryj ]
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



temat rzeka ... ale działa na W7 64 i poniekąd na W8

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 lut 2014, o 22:58 
Offline
Użytkownik

Dołączył(a): 26 lip 2012
Posty: 291
Lokalizacja: okolice Opola
Pomógł: 20

O manifeście oczywiście wiem i używam, bez tego przy próbie dostępu wywalało błąd dostępu, chyba, że dałem kod zapisywania klucza do bloku try{}

Ale to już rozwiązałem, i najbardziej interesuje mnie jak zmusić frameworka do aby nie dodawał kluczy z apki 32-bitowej do Software\Win6432Node tylko do normalnej ścieżki. Może rozwiązaniem byłoby zapożyczenie kilku funkcji od WinAPI, szkoda tylko bo obsługa rejestru w .NET jest po prostu bajeczna :D

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO