Ispravno programiranje za user account-e

poruka: 4
|
čitano: 2.058
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
offline
Ispravno programiranje za user account-e

Pozdrav,

 

pokrenuo sam novu temu, te ako sam promašio, oprosti admine, slobodno me briši.

Nisam novi u programiranju (stari VB uz puno API-ja, win XP), pa sam prešao na c#. Do sada nisam imao problema sa instalacijom i pokretanjem programa (čak i stari vb exe radi na win7 64b ako maknem jedan 32b dll), ali u slučaju da aplikaciju pokrećem kao admin. Napisao (prepisao) sam staru aplikaciju u c# te se uredno instalira i pokreće samo u admin računu. U slučaju da se instalira za običnog usera (user vulgaris) bez admin prava, e to baš i ne radi. Pretpostavljam da iz koda trebam što više izbaciti registry, odnosno, dio koji ide u registry prebaciti u sam postupak instalacije (registracija tipa datoteka za explorer, npr.).

Bilo bi lijepo kad bi netko napisao par generalnih pravila (ili više od par!), jer vjerujem da mali broj nas zna kako ispravno rješiti ovakovu situaciju.

Moj PC  
0 0 hvala 0
11 godina
offline
Re: Ispravno programiranje za user account-e

Pokušavaš pristupiti s ograničenog (limited ili kako se već zove) ili sa guest accounta?

 

Ako si sa ograničenog, tada se nadam kako pokušavaš pisati na putanju HKCU/Software (HKEY_CURRENT_USER/Software), a ne na HKLM/SOFTWARE (HKEY_LOCAL_MACHINE/SOFTWARE).

 

Kod kreiranja ključa ako nemaš privilegije, tada bi trebao dobiti SecurityException, pa pokušaj na taj način.

 

Naime, ako uzmeš regedit i pogledaš preko njega privilegije ključeva, tada ćeš vidjeti dok si ulogiran pod računima koji nisu administratorski ili "power user" možeš jedino čitati (a ne i pisati) vrijednosti ovih pod HKLM/SOFTWARE.

 

Pravilo oko pisanja je jednostavno - piši po ključevima koje si sam kreirao (nekakva konfiguracija za aplikaciju) ili za koje imaš privilegije pisanja i tada nećeš imati problema.

 

Ako je aplikacija rađena za kućne korisnike, tada uglavnom važi ovo što sam napisao, no ako je računalo dio nekog većeg sustava gdje su sistemci definirali privilegije za pojedine dijelove registry-a, tada ćeš se možda morati i natezati s njima oko postavljanja privilegija za čitanje/pisanje.

 

Što se tiče registriranja tipova datoteka, taj dio posla obično ostavljam installeru, jer se to može mijenjati ovisno o verziji Windowsa.

Ako se to ostavi aplikaciji, tada se dobije ovo što ti imaš sada.

Uz to, tko ti može garantirati kako se u idućoj verziji Windowsa neće promijeniti mehanizam rada sa registry-em i/ili putanje ključeva?!

Tu situaciju sam imao oko definiranja postavki za Windows sevise iz aplikacije (što servis treba napraviti u slučaju da se skrši i koliko puta izvršiti restart servisa nakon nekog predefiraniranog vremena). Iz aplikacije je to bilo prava muka i teško izvedivo, a iz Windows installera relativno jednostavno.

 

Radio sam do sada sa dva installera za Win XP, jedan je NSIS (Nullsoft installer), a drugi je Windows installer.

Nullsoft ima zeznutu sintaksu za početnike, ali postoji plugin za Eclipse pomoću kojeg nije teško posložiti skriptu i naklikati najbitnije dijelove.

NSIS ima dosta moćnih dodatakai uglavnom su pokrivene najčešće situacije i problemi.

S Windows installerom radio sam u Visual Studiu 2005, uglavnom se svodi na editiranje XML datoteka (ima i nekoliko GUI-a za to, ali se plaćaju), no njega je malo zeznuto instalirati i shvatiti ako si početnik. Doslovno zahtijeva više čitanja dokumentacije od NSIS-a, ali je moćniji, naročito ako se rade aplikacije za sustave gdje sistemci imaju masovne instalacije, pa im tu .msi format malo pomogne.

 

Još jedan savjet - nemoj nikako koristiti apsolutne putanje za direktorije, jer nema garancije gdje će se nalaziti "Program Files", korisnički, temp ili Windows direktorij, niti kako će se zvati.

Pogledaj npr. ovo:

http://en.wikipedia.org/wiki/Program_Files

 

To se rješava otprilike ovako:

http://www.beansoftware.com/NET-Tutorials/Environment-Variables.aspx

 

Uz to potraži "Environment Variables" na MSDN-u.

 

No, nemoj dolaziti u napast previše koristiti Environment.SetEnvironmentVariable() , jer se ostalim aplikacijama možda neće svidjeti promjene.

 

http://technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx

12 godina
neaktivan
offline
Ispravno programiranje za user account-e

Sve ovisi što tvoja aplikacija radi i zašto joj trebaju admin prava. Primjerice, radio sam jedan program kojeg sam morao limitirati samo na admin korisnike jer ovi koji nisu imali te privilegije nisu mogli svugdje pisati po disku, raditi s registrijem itd. Testiraj aplikaciju na ne-admin accountu pa vidi što ne radi i kakve greške se javljaju.

Moj PC  
0 0 hvala 0
12 godina
offline
Re: Ispravno programiranje za user account-e

Hvala na brzom odgovoru, proučim pa kad zapnem (a znam da hoću), ponovo pitam.

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice