TRegistry a Windows Vista

Odpowiedz Nowy wątek
2007-10-23 11:04

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0

witam,
znalazłem u was ładny artykuł:
Rejestracja własnego rozszerzenia
gdzie opisane jest rejestrowanie rozszerzeń plików,

mam też swój kod (podobny do tego,taka sama idea i wywołania OpenKey)
ale niestety TO NIE CHCE POPRAWNIE DZIAŁAĆ pod Windows Vista,
trzeba program uruchamiać jako administrator,

czy jest możliwość aby zwykły user mógł dokonywać modyfikacji w HKEY_CLASSES_ROOT
tak aby aplikacja mogła swobodnie rejestrować typy plików?

czekam na wszą pomoc,
pozdrawiam, witek

Pozostało 580 znaków

bejo
2007-10-23 11:30
bejo
0

Dołączam się...
Chodzi mi też o tworzenie pliku w ProgramFiles (Vista nie chce zezwolić na jego... utworzenie).

Pozostało 580 znaków

2007-10-23 11:43

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0

ok,
ale pamiętaj, mi chodzi o operowanie na TRegistry pod Vistą !
muszę rejestrować rozszerzenia plików i wiązać je z programem...
np. kod:

if _reg.OpenKey( _path + '\shell\open', True) then begin
  _reg.WriteString( '', 'Open with ' + SHELL_FULL );
  _reg.CloseKey;
  _reg.OpenKey( _path + '\shell\open\command', True) ;
  str := '"' + ParamStr(0) + '" "%1"' ;
  _reg.WriteString( '', str );
  _reg.CloseKey;
end ;

do tego if nie wchodzi, bo nie tworzy klucza.

czekam na pomoc

Pozostało 580 znaków

Bejo
2007-10-23 18:58
Bejo
0

A podałeś wcześniej ?

Reg.Root := HKEY_CLASSES_ROOT;

Pozostało 580 znaków

2007-10-23 19:05

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0

TAK, podałem

Pozostało 580 znaków

2007-10-23 19:53
Moderator

Rejestracja: 17 lat temu

Ostatnio: 5 godzin temu

0

Zwykły user (dzięki Bogu) nie ma praw ani do zapisu w Program Files, ani do HKCR. Wyłącz UAC na koncie administratora, albo uruchom program na prawach administratora. Innej opcji nie ma (oprócz zmiany uprawnień klucza HKCR czy katalogu Program Files).

Zamiast zapisywać np. ustawienia programu do \Program Files powinieneś zapisywać do "Dane aplikacji" (zmienna środowiskowa %APPDATA%). A jeżeli tworzysz program instalacyjny, to sama jego nazwa "setup.exe" wyzwoli w systemie okienko UAC i program zostanie uruchomiony na wyższych prawach. Można cały ten mechanizm też jakoś kontrolować i uruchamiać w odpowiednich momentach, ale nie wiem jak to wygląda w Delphi, trzeba by poszukać...

// dodane:
Warto też przyjrzeć się HKEY_CURRENT_USER\Software\Classes bo to chyba umożliwia dodawanie rozszerzeń tylko dla jednego usera.

Pozostało 580 znaków

2007-10-23 22:20

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0

cześć,
uf, słuchajcie, problem rozwiązany, jak?
otóż doszukałem się w MSDN na stronach Microsoft o wpisywaniu do rejestru
takiej informacji, że nie zaleca się wpisywanie bespośrednio do HKEY_CLASSES_ROOT (HKCR)
tylko odpowiednio:
HKEY_CLASSES_LOCAL_MACHINE\Software\Classes - jeżeli to ma być dla wszystkich userów
HKEY_CLASSES_CURRENT_USER\Software\Classes - dla aktualnego usera

i problem rozwiązany, bo HCKR to jakby widok i tam te informacje i tak trafiają,

XP na to pozwalał bez problemu (na zapis w HKCR) ale Vista już nie.

pozdrawiam wszystkich
witek

Pozostało 580 znaków

2007-10-24 00:32

Rejestracja: 16 lat temu

Ostatnio: 10 lat temu

0
wcizmowski napisał(a)

XP na to pozwalał bez problemu (na zapis w HKCR) ale Vista już nie.

Z tego, co pamiętam XP też nie pozwala, ale w tym systemie pawie każdy użytkownik domowy siedzi domyślnie na koncie uprzywilejowanym z grupy Administratorzy. Nic zatem dziwnego, że ma prawo do wszystkiego. To nie wina systemu tylko użytkowników (no może powiedzmy wina pierwszego domyślnie tworzonego konta).


<font color="red">Konto porzucone</span>

Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir 'Szczawik' Włodkowski

Pozostało 580 znaków

2007-10-24 08:53

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0
Szczawik napisał(a)

Z tego, co pamiętam XP też nie pozwala, ale w tym systemie pawie każdy użytkownik domowy siedzi domyślnie na koncie uprzywilejowanym z grupy Administratorzy. Nic zatem dziwnego, że ma prawo do wszystkiego. To nie wina systemu tylko użytkowników (no może powiedzmy wina pierwszego domyślnie tworzonego konta).

no tak, właściwie masz rację, pozwala bo przeważnie każdy ma prawa admina.
ale naprawdę sam się dziwię, że dopiero teraz odkryłem, żeby nie zapisywać do HKCR ;-)

Pozostało 580 znaków

2007-10-26 15:11

Rejestracja: 12 lat temu

Ostatnio: 6 lat temu

0

cześć,
a może ktoś z was ma wiedzę jak poprawnie rejestrować rozszerzenia plików
i wiązać je z programem.
pytam, bo jak się okazuje sprawa nie jest taka prosta.
można bez problemu zapisywać w HKEY_CURRENT_USER\Software\Classes
ale to mnie do końca nie urządza, bo jeśli np. w systemi istnieje dowiązanie do np. pliku
.jpg to ja nie chcę tego niszczyć tylko umożliwić aby przy kliknięciu prawym przyciskiem myszy
było w menu kontekstowym info "Open with..."
a takie sztuczki można robić zapisując do HKEY_LOCAL_MACHINE ale niestety, wówczas user musi mieć prawa admina...

proszę o pomoc

Pozostało 580 znaków

bejo
2007-10-26 19:54
bejo
0

Vista narobiła takich problemów, że teraz to w ogóle nie wiadomo co i jak robić. Nikt nic nie wie, a szukać na stronach Microsoftu dla kogoś kto jest początkujący to aż strach się bać.

W tym systemie poblokowali wiele rzeczy, żeby głupi klucz zapisać, to nieźle się trzeba na głowić... przepraszam, ale jesteśmy tego przykładem.

Pozostało 580 znaków

Odpowiedz

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

Robot: Bingbot