Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Windows defender i autostart program u Visti

[es] :: Pascal / Delphi / Kylix :: Windows defender i autostart program u Visti

[ Pregleda: 3882 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Windows defender i autostart program u Visti11.09.2011. u 09:42 - pre 152 meseci
Napravio sam aplikaciju u Delphi koja normalno radi na XP. Posto aplikacija dodaje autorun kljuc u registry ako se cekira opcije
AutoStart i tu sam naisao na problem u Visti posto je aplikacija morala da se otvori kao "Run as Administrator" . No to sam resio tako sto sam napravio manifest fajl (UAC). Sad sam naisao na drugi problem. Aplikacija normalno radi ali kad se restartuje Vista , aplikacija ostaje blokirana od strane Windows Defendera i ceka njegovo odobrenje. Postoji li neka mogucnost da svoju aplikaciju uradim trusted ili pak da Windows defender pita za odobrenje kao svaki firewall, a ne da se udje u defenderov meni da bi se cekiralo odobrenje. Mislim aplikaciju treba da koriste i ljudi koji se ne razumeju bas puno u Vista sistem i malo ce biti tesko da sami idu u defenderovo podesavanje.
Nemam nista protiv zastite ali ovaj Win Defender je malo glupo uradjeno. U sustini svaki firewall pre blokiranja pita da li zelite da pustate ili ne.
Siguran sam da postoji resenje posto Skype i MSN rade bez problema.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Windows defender i autostart program u Visti11.09.2011. u 19:43 - pre 152 meseci
> Napravio sam aplikaciju u Delphi koja normalno radi na XP. Posto aplikacija dodaje autorun kljuc u registry ako se cekira opcije
> AutoStart i tu sam naisao na problem u Visti posto je aplikacija morala da se otvori kao "Run as Administrator" . No to sam resio tako sto sam napravio manifest fajl (UAC). Sad sam naisao > Nemam nista protiv zastite ali ovaj Win Defender je malo glupo uradjeno. U sustini svaki firewall pre blokiranja pita da li zelite da pustate ili ne.

Nisam radio preko autorana pa ti ne mogu pomoći u tom delu, ja ubacim prg (shortcut) u Startup i do sada nije bilo problema. Ako ti to može rešiti problem, mogu poslati primer.
 
Odgovor na temu

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Windows defender i autostart program u Visti11.09.2011. u 20:17 - pre 152 meseci
Posalji mi molim te. Ali mani se cini da imam problem oko toga sto daje da nema "Publisher". Ovo je moj UAC:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="MyProject"
type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Ovo sam ubacio u RES file i i sada moja aplikacija ima admin privilegije. Jedino me taj autorun zeza
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Windows defender i autostart program u Visti11.09.2011. u 21:43 - pre 152 meseci
Code:


uses
  JclShell, JclFileUtils;

function ShellLinkPerform(const ATarget: string; const AFolder: Integer; const AOperation: Char): Boolean;
var
  DoUninitialize: Boolean;
  Temp: TShellLink;
  LinkPath: string;
  fv: TJclFileVersionInfo;

  function MatchLinkTarget: Boolean;
  var
    lpFindFileData: TWIN32FindData;
    hFindFile: THandle;
  begin
    Result := False;
    // Ispitujemo sve fajlove tj. linkove u datom folderu i gledamo da li neki od
    // tih linkova (shortcutova) upucuje na isti target kao i ovaj prosledjeni
    hFindFile := FindFirstFile(PChar(LinkPath + '*'), lpFindFileData);
    if hFindFile <> INVALID_HANDLE_VALUE then
    repeat
      if (lpFindFileData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> FILE_ATTRIBUTE_DIRECTORY then
      begin
        if Succeeded(ShellLinkResolve(LinkPath + lpFindFileData.cFileName, Temp)) then
        begin
          if CompareText(PathGetLongName(Temp.Target), ATarget) = 0 then
          begin
            LinkPath := LinkPath + lpFindFileData.cFileName;
            Result := True;
          end;

          ShellLinkFree(Temp);
        end;
      end;
    until Result or not Windows.FindNextFile(hFindFile, lpFindFileData);

    Windows.FindClose(hFindFile);
  end;
begin
  // Procedura za pravljenje, proveru postojanja ili brisanje shell linka (shortcuta).
  // AFolder je CSIDL oznaka foldera u windowsu (Desktop, StartMenu, StartUp...)
  // AOperation je operacija, A(dd), Q(query), D(elete)
  DoUninitialize := Succeeded(CoInitialize(nil));

  // Najpre proveravamo da li u ciljnom folderu vec postoji shortcut na prosledjeni target
  LinkPath := IncludeTrailingBackslash(GetSpecialFolderLocation(AFolder));
  Result := MatchLinkTarget;

  case AOperation of
    'A':
    begin
      if Result then
        Result := False // Link vec postoji nemamo sta da dodamo
      else begin
        // Dodajmo link u folder, LinkPath vec sadrzi putanju do Foldera, dodajmo mu i filename
        LinkPath := LinkPath + ChangeFileExt(ExtractFileName(ATarget), '.lnk');
        FillChar(Temp, SizeOf(TShellLink), 0);

        fv := TJclFileVersionInfo.Create(ATarget);
        try
          if fv.FileDescription <> '' then
            Temp.Description := fv.FileDescription
          else
            Temp.Description := ExtractFileName(ATarget);
        finally
          fv.Free;
        end;

        Temp.WorkingDirectory := ExtractFilePath(ATarget);
        Temp.Target := ATarget;

        Result := Succeeded(ShellLinkCreate(Temp, LinkPath));

        ShellLinkFree(Temp);
      end;
    end;

    'D':
    begin
      if Result then // Ako postoji link na prosledjeni target, brisemo ga
        Result := Windows.DeleteFile(PChar(LinkPath));
    end;

    'Q': ; // Nemamo sta da radimo, vec je utvrdjeno da li link postoji
  end;

  if DoUninitialize then
    CoUninitialize;
end;

upotreba:

  // Da li program treba startovati sa Windowsom, zavisno od korisnikovog odabira
  // dodajemo ili brisemo shortcut iz StartUpa.
  if chkbxStartUp.Checked then
    UtilsEx.ShellLinkPerform(ParamStr(0), CSIDL_STARTUP, 'A')
  else
    UtilsEx.ShellLinkPerform(ParamStr(0), CSIDL_STARTUP, 'D');


 
Odgovor na temu

salaczr

Član broj: 160654
Poruke: 103
93.87.158.*



+5 Profil

icon Re: Windows defender i autostart program u Visti12.09.2011. u 07:24 - pre 152 meseci
Skype i MSN su digitalno potpisani od strane proizvodjaca.
Ako zelis da se igras sa tim, ovo bi moglo da ti bude polazno mesto http://www.disi.unige.it/person/FerranteM/delphiopenssl/
Bilo bi dobro da i ovo procitas http://www.wiscocomputing.com/articles/code-signing.htm
A evo i komercijalne varijante http://www.example-code.com/delphi/certs.asp

sretno

 
Odgovor na temu

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Windows defender i autostart program u Visti15.09.2011. u 22:21 - pre 152 meseci
Malo sam bio zauzet , pa nisam stigo da vam kazem hvala.

savkic , ti koristis JEDI komponenete, ja to nemam instalirano pa nisam probao tvoj primer.
 
Odgovor na temu

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Windows defender i autostart program u Visti19.09.2011. u 19:11 - pre 152 meseci
Opet problemi sa Windows 7 i Vista.
Pokusao sam sve nacine da se moja aplikacija staruje zajedno sa sistemom i
HKCU i Startup folder , ali nista.
Ima li neko ideju ili moram da uradim digital signiture da bi resio problem?
 
Odgovor na temu

((BugA))
Igor Djordjevic
Bor, Srbija

Član broj: 29241
Poruke: 196
*.dynamic.isp.telekom.rs.

ICQ: 66516695
Sajt: www.MalamutKlub.com


+17 Profil

icon Re: Windows defender i autostart program u Visti19.09.2011. u 21:27 - pre 152 meseci
> savkic: Nisam radio preko autorana pa ti ne mogu pomoći u tom delu, ja ubacim prg (shortcut) u Startup i do sada nije bilo problema. Ako ti to može rešiti problem, mogu poslati primer.

Cek, cek, sad me zainteresova - uspevao si da program pokrenes na ovaj nacin sa punim administratorskim privilegijama (elevated)?

mica99, nisam strucnjak i jos uvek ispitujem mogucnosti (i ogranicenja) koje UAC nosi, ali mislim da to sto ti hoces (start-up program sa admin privilegijama) nije tako jednostavno na Visti / Sedmici. Sumnjam da bi davanje para za digital signature resilo ista, osim sto bi imao "lepsi" UAC prozor (kad te Windows pita da li da dozvoli elevaciju programa ili ne, ne bi bio zuti prozor, nego plavi, i pisalo bi tvoje ime kao ime proizvodjaca) :) - ali admin svejedno ne bi dobio bez potvrde korisnika, u suprotnom bi to predstavljalo bezbednosni rizik.

Pomenuo si Skype i MSN - zasto mislis da se ovi programi pri podizanju sistema pokrecu sa administratorskim privilegijama? Gledajuci im manifest, oba imaju "asInvoker", sto znaci da im ne treba elevacija (pa nema ni problema prilikom podizanja sa sistemom).

Pravo pitanje koje se ovde namece (koje Microsoft namece :) jeste da li ti je zaista potrebna elevacija (administratorske privilegije) pri podizanju tvog programa zajedno sa sistemom, tj. da li mozes da redizajniras logiku rada programa i izbegnes elevaciju sve do trenutka kada je ona apsolutno neophodna, a tada je mozes zatraziti i od samog korisnika...?

E sad, da ti ne stajem na muku i ne pravim se mnogo pametan, ako nema drugog resenja osim da se program pokrece sa admin privilegijama, ja nadjoh dve mogucnosti - ili da prilikom instalacije (ili preko samog programa koji u tom trenutku ima admin privilegije) registrujes servis koji ce po podizanju sistema pokrenuti tvoj program (servis ima administratorske privilegije pa ce ih automatski imati i tvoj program), ili da (ponovo programski) napravis novi zadatak (task) u okviru Windows-ovog Task Scheduler-a koji ce po podizanju sistema pokrenuti tvoj program sa administratorskim privilegijama. U slucaju task-a trebalo bi da te defender samo prvi put pita da li da dozvoli task, a da nakon toga to zapamti i vise ne pita (tako barem kazu na internetu, nisam (jos) probao ;)

http://blog.gerke-preussner.de...ted-startup-programs-in-vista/ (snadji se kako da programski napravis task)
http://stackoverflow.com/quest...rivileges-at-windows-7-startup (u drugom komentaru covek predlaze JclTask.pas iz JEDI biblioteke... vredi da sve to instlairas, ima tu svacega korisnog ;)
http://www.delphipages.com/for...thread.php?t=208261&page=2 (vezano za servis)

Mozda ima jos resenja, ali ja nadjoh ova dva, pa ti vidi sta ti najvise odgovara (ako vec neces/ne mozes da redizajniras program :)

p.s. Evo ti i ovaj link (PDF) vezan za Delphi i UAC, mozda si to vec citao, ali ako nisi mozda ti bude interesantno.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Windows defender i autostart program u Visti19.09.2011. u 23:30 - pre 152 meseci
> Cek, cek, sad me zainteresova - uspevao si da program pokrenes na ovaj nacin sa punim administratorskim privilegijama (elevated)?

Ne, samo obican startup, admin privilegije mi nisu trebale.

 
Odgovor na temu

salaczr

Član broj: 160654
Poruke: 103
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: Windows defender i autostart program u Visti20.09.2011. u 07:35 - pre 152 meseci
@mica99
Problem prilikom pokretanja tvog programa dolazi od UAC-a ili Windows Defender-a?

Ukoliko imas problem sa Windows Defender-om preporucujem ti da procitas sledecih par linkova:

http://support.microsoft.com/kb/927367
http://www.codeguru.com/forum/archive/index.php/t-480583.html
http://boinc.berkeley.edu/dev/forum_thread.php?id=1779
http://www.vistax64.com/tutori...ows-defender-notification.html

Ukoliko je problem do UAC-a (a ne zelis da ga iskljucis) mozes da pokusas ovo:

http://www.vistax64.com/tutori...c-elevate-privilege-level.html
ili
http://www.jimmah.com/vista/Ad...n/autostart_admin_program.aspx

Sto se tice zaobilazenja UAC-a jedno od resenja bi trebalo da bude kreiranje service-a, koji bi prilikom podizanja sistema pokretao tvoj program sa RunAs.
Kod Viste i Win7, sto se tice UAC-a, svi accoutni-i su isti (i limited i administrator i bilo koji drugi osim SYSTEM-a), jedino sto mozes da uradis je da program pokrenes sa RunAs kao SYSTEM i time izbegnes UAC notifikaciju.

Ukoliko ti je problem firewall imas u JEDI-u JwsclFirewall.pas kojim mozes da svoj program ubacis u allow list.

Nadam se da sam ti pomogao.

poz

 
Odgovor na temu

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Windows defender i autostart program u Visti20.09.2011. u 08:44 - pre 152 meseci
Da pokrenuo sam aplicaciju sa full admin privilegiju. Mogu da upisem kljuc i u HKLM samo i kad pogledam prko msconfig u tab startup vidim da moj program
stoji i da je dodat u startup, ali nece da se pokrene sa sistemom.
Za Vistu znam sigurno da je problem defender ali za win7 nisam siguran
 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Windows defender i autostart program u Visti23.09.2011. u 12:46 - pre 152 meseci

U win7 može da se pokrene iz bat fajla:


start ...putanja\Project1.exe



Verovatno može na još neki slilčan način.
 
Odgovor na temu

mica99
Srbija

Član broj: 243749
Poruke: 90
*.dynamic.isp.telekom.rs.



+1 Profil

icon Re: Windows defender i autostart program u Visti09.02.2012. u 21:43 - pre 147 meseci
Ponovo sam otvorio ovu temu da bih delio ovo sa vama.
Evo resenja na kome sam dosta radio.

Da bi Vista ili Windows 7 dao programu admin privilegiju potrebno je napraviti u notepad fajl koji sadrzi sledece:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="UACAwareApplication"
type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

Postoje mnogo varijanata na netu ali je ova tacna:
Zatim fajl se sacuva kao uac.manifest (ne *.txt), napravi se jos jedan bat file koji ce sadrzati:

brcc32 uac.RC -fouac.RES
pause

i trece jos jedan fajl u notepad koji ce sadrzi :
1 24 "uac.manifest"
njega treba sacuvati kao uac.rc

Pokrece se bat fajl i dobice se novi fajl koji se zove "uac.RES"

uac.RES se kopira u folder delphi projekta i mora da se inkluduje u samu aplikaciju. To se radi tako sto na pocetku forme
ispod
{$R *.dfm} upise se i {$R uac.res} (Najbolje je uraditi u source aplikacije, tada ce sve forme imati admin privilegije ili se postavi samo u formi
koja ima neke komande za rad sa sistemom gde su potrebne admin privilegije).

Sad sto se tice autostart aplikacije u Vista ili Windows 7. Nijedna od goge dati od mojih koleganije radila kako treba, ali sam ja pronasao resenje:
RunOnce radi bez problema i na Vista i na Win7


// Napravi kljuc u registry

function TFrmMain.NapraviKljuc(Key: HKEY; Subkey, name, Value: string): Boolean;
var
RegKey:HKEY;
begin
result:=false;
RegCreateKey(Key,pchar(Subkey),RegKey);
if RegSetValueEx(RegKey,pchar(name),0,REG_EXPAND_SZ,pchar(value),length(value))= 0 then
Result:=true;
RegCloseKey(RegKey);
end;

Zatim kasnije u aplikaciji se pozove f-ja
NapraviKljuc(HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\','MojProgram',pchar(Application.exename));

Posto RunOnce posle pokretanja aplikacije sama se brise neobhodno je dodati jednu prveru
OnForm Create

if Autorun.Checked=True then
NapraviKljuc(HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\','MojProgram',pchar(Application.exename));


Ima jos nesto sto hoce da vam kazem. Ukoliko zelite potpuno da iskljucite UAC da vas obavestava evo kako:

///--------- Disable UAC Notifier -----------------------
procedure TFrmMain.DisUAC;
var DTM: Tregistry;
begin
DTM:= tregistry.Create;
DTM.RootKey:= HKEY_LOCAL_MACHINE;
DTM.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System\',false);
DTM.WriteInteger('EnableLUA',0);
DTM.Free;
end;

///--------- Enable UAC Notifier -----------------------
procedure TFrmMain.EnUAC;
var DTM: Tregistry;
begin
DTM:= tregistry.Create;
DTM.RootKey:= HKEY_LOCAL_MACHINE;
DTM.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System\',false);
DTM.WriteInteger('EnableLUA',1);
DTM.Free;
end;

 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Windows defender i autostart program u Visti10.02.2012. u 14:19 - pre 147 meseci
Da dodam još jednu mogućnost. Kada se u win7 nekom programu uključi (štiklira) ovo podešavnje:

Properties/Compatibility/Run this program as administrator

on se startuje sa admin pravima. To isto može da se uključi i ovako:

Code:

  procedure SetRunAsAdminAppCompatFlag(AppPathExeName: String);
  var
    Reg: TRegistry;
  begin
    Reg := TRegistry.Create(KEY_WRITE);
    try
      Reg.RootKey := HKEY_CURRENT_USER;
      if Reg.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers', True) then
        Reg.WriteString(AppPathExeName, 'RUNASADMIN');
    finally
      Reg.CloseKey;
      Reg.Free;
    end;
  end;



Ovo se ne odnosi na autostart...

[Ovu poruku je menjao tkaranovic dana 10.02.2012. u 15:36 GMT+1]
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
*.dynamic.isp.telekom.rs.



+31 Profil

icon Re: Windows defender i autostart program u Visti26.02.2012. u 19:33 - pre 147 meseci
Kod mene nesto ne radi dobro
procedure TFrmMain.DisUAC;
tj. nr iskljucuje poruku o prijavi admin statusa.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Windows defender i autostart program u Visti

[ Pregleda: 3882 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.