TRegistry a Windows Vista

0

witam,
znalazłem u was ładny artykuł:
http://4programmers.net/Delphi/FAQ/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

0

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

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

0

A podałeś wcześniej ?

Reg.Root := HKEY_CLASSES_ROOT;

0

TAK, podałem

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.

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

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).

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 ;-)

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

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.

0

cześć,
no w końcu mam rozwiązanie,
zajrzyjcie tutaj:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2326488&SiteID=1

lub bezpośrednio do dokumentacji o rejestrowaniu plików:
http://msdn2.microsoft.com/en-us/library/bb776870.aspx

pozdrawiam

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