Dodawanie wyjatkow do zapory windows

0

witam, mam problem chce dodac mój program do wyjątkow Zapory windows mam o to taki kod znaleziony w internecie.

var

reg: TRegistry;

sp2 : string;

begin

reg := TRegistry.Create;

reg.RootKey := HKEY_LOCAL_MACHINE; //rozpoczynamy otwieranie każdej gałęzi z osobna sp2:=Application.ExeName; //pobranie lokalizacji w której uruchomiono nasz program reg.OpenKey('System', True);

reg.OpenKey('ControlSet001', True);

reg.OpenKey('Services', True);

reg.OpenKey('SharedAccess', True);

reg.OpenKey('Parameters', True);

reg.OpenKey('FirewallPolicy', True);

reg.OpenKey('StandardProfile', True);

reg.OpenKey('AuthorizedApplications', True);

reg.OpenKey('List', True);

if aktywuj = True then

begin

reg.WriteString(sp2,sp2+':*:Enabled:'+ExtractFileName(sp2)); // zapisanie wyjątku wg. opisu z punktu 1.1, natomiast nazwą własną będzie nazwa naszego projektu

end

else if aktywuj = False then

begin

reg.DeleteValue(sp2); //usunięcie wyjątku

end;

reg.CloseKey;

end;



i nie wiem gdzie dodac sciezke i nazwe programu, domyslam sie ze w tej lini 

<delphi> 
reg.WriteString(sp2,sp2+':*:Enabled:'+ExtractFileName(sp2)); 


tylko nie wim czym zastąpic sp2,sp2 i ExtractFileName(sp2)

mogł by mi ktos to wytłumaczyc na chłopski rozum?
</delphi>
0

W złym kluczu masz to dodawanie, bo z tego co widzę u siebie w XP to te wyjątki są w innym i nie wiem,
czy na pewno dodanie programu poprzez Rejestr wystarczy, ale możesz spróbować. A co do nazwy klucza
to ma nim być ścieżka i nazwa pliku wykonywalnego. A poniżej przykład dla dodanego Total Commandera.

REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"C:\\Program Files\\TOTALCMD\\TOTALCMD.EXE"="C:\\Program Files\\TOTALCMD\\TOTALCMD.EXE:*:Enabled:Total Commander 32 bit international version, file manager replacement for Windows"
0

program sie uruchamia ale nie dodaje wyjatku popełniłem gdzies błąd?

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Registry;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
  var

reg: TRegistry;

sp2 : string;

begin

reg := TRegistry.Create;

reg.RootKey := HKEY_LOCAL_MACHINE; //rozpoczynamy otwieranie każdej gałęzi z osobna sp2:=Application.ExeName; //pobranie lokalizacji w której uruchomiono nasz program reg.OpenKey('System', True);

reg.OpenKey('ControlSet001', True);

reg.OpenKey('Services', True);

reg.OpenKey('SharedAccess', True);

reg.OpenKey('Parameters', True);

reg.OpenKey('FirewallPolicy', True);

reg.OpenKey('StandardProfile', True);

reg.OpenKey('AuthorizedApplications', True);

reg.OpenKey('List', True);

begin

reg.WriteString "C:\\win.EXE"="C:\\win.EXE:*:Enabled: win.exe";

end
reg.CloseKey;

end;
0

po 1. jak wklejasz kod, to nie wklejaj calego unitu tylko sama procedure - mniejszy balagan bedzie.
po 2. otwierasz:
HKEY_LOCAL_MACHINE\ControlSet001\...
a gdzie "SYSTEM" ??
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\...
po 3. nie muszisz 10 razy wywolywac reg.OpenKey z kolejnymi kluczami. mozna raz a porzadnie:

reg.OpenKey('SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List', True);

po 4. olesio podal Ci jak to ma wygladac:

olesio napisał(a)
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"C:\\Program Files\\TOTALCMD\\TOTALCMD.EXE"="C:\\Program Files\\TOTALCMD\\TOTALCMD.EXE:*:Enabled:Total Commander 32 bit international version, file manager replacement for Windows"

ale widac, ze to jest wyeksportowany jeden wpis do pliku *.reg, a tam sciezki sa inaczej zapisywane.
gdybys choc troche sie postaral to bys sprawdzil jak to wyglada w rejestrze w podanym kluczu.
wpisujesz do rejestru sciezki z podwojnymi slachami (C:\win.exe). czemu? tak sa tylko zapisywane w pliku *.reg.
w rejestrze sa "normalne sciezki" ("C:\win.exe").

0

cos chyba zle wkleiles ;]
a co do "SYSTEM", faktycznie "sie dodał" do komentarza, nie zuwazylem.
pytanie czy jest tak tylko na forum czy w programie tez...?

0
cimak napisał(a)

cos chyba zle wkleiles ;]
a co do "SYSTEM", faktycznie "sie dodał" do komentarza, nie zuwazylem.
pytanie czy jest tak tylko na forum czy w programie tez...?

Podejrzewam, że w programie też, bo kolega kopiował całego Unita, więc wątpię, żeby cokolwiek zmieniał? :-)
No, ale myślę, że po tych informacjach jakie dostał to już chyba wszystko mu działa jak należy?

0

no własnie cos nie działa wywala blad 'Not enough actual parameters' tzn Zamało parametrów w funkcji.

według waszej pomocy ta linia powina wyglądac tak.. chyba ze cos pomieszałem?

reg.WriteString ('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');
0

Za mało *

0

:|

based napisał(a)
reg.WriteString ('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');

co to ma byc niby?
skad Ty to wytrzasnales!?

0

cos nie tak?

0
based napisał(a)

cos nie tak?

noo... naucz sie podstaw.
zobacz sobie jak ta linijka wyglada w Twoim pierwszym poscie...

0
cimak napisał(a)

:|

based napisał(a)
reg.WriteString ('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');

co to ma byc niby?
skad Ty to wytrzasnales!?

ten cały kod ktory znalazłem w necie własnie tak wyglada tzn ta linijka.

0
based napisał(a)
cimak napisał(a)

:|

based napisał(a)
reg.WriteString ('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');

co to ma byc niby?
skad Ty to wytrzasnales!?

ten cały kod ktory znalazłem w necie własnie tak wyglada tzn ta linijka.

Coś namieszałeś kolego, masz tu działający bo raczej z tego Twojego to nie wiele się dowiesz :-)


begin
  if checkbox1.Checked then aktywuj:=true else aktywuj:=false;
  begin
  reg := TRegistry.Create;
  Nazwa_programu:=Application.ExeName; //pobranie lokalizacji w której uruchomiono nasz program
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List', True);
  if aktywuj = True then
    reg.WriteString(Nazwa_programu,Nazwa_programu+':*:Enabled:'+ExtractFileName(Nazwa_programu)) // zapisanie wyjątku wg. opisu z punktu 1.1, natomiast nazwą własną będzie nazwa naszego projektu
  else if aktywuj = False then
    reg.DeleteValue(Nazwa_programu); //usunięcie wyjątku
  end;
reg.CloseKey;
end;
0

rranyyy... robisz cos "na pale" metoda copy'ego paste'a i sie dziwisz ze nie dziala.trzeba rozumiec co sie robi. inaczej bedziesz tu pisal 10 postow dziennie, na ktore bedzie tylko jedna sensowna odpowiedz: "pomysl!".

reg.WriteString('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');

reg.WriteString('C:\win.EXE') - to jest procedura z 1 parametrem
'=' - to jest string
('C:\win.EXE:* win.exe') - to jest string w nawiasie.
od kiedy w delphi masz taka konstrukcje "procedura string string;"?
do WriteString trzeba podac dwa parametry: nazwe i wartosc.

0
jawor1104 napisał(a)
based napisał(a)
cimak napisał(a)

:|

based napisał(a)
reg.WriteString ('C:\win.EXE')'='('C:\win.EXE:*:Enabled: win.exe');

co to ma byc niby?
skad Ty to wytrzasnales!?

ten cały kod ktory znalazłem w necie własnie tak wyglada tzn ta linijka.

Coś namieszałeś kolego, masz tu działający bo raczej z tego Twojego to nie wiele się dowiesz :-)


begin
  if checkbox1.Checked then aktywuj:=true else aktywuj:=false;
  begin
  reg := TRegistry.Create;
  Nazwa_programu:=Application.ExeName; //pobranie lokalizacji w której uruchomiono nasz program
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKey('SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List', True);
  if aktywuj = True then
    reg.WriteString(Nazwa_programu,Nazwa_programu+':*:Enabled:'+ExtractFileName(Nazwa_programu)) // zapisanie wyjątku wg. opisu z punktu 1.1, natomiast nazwą własną będzie nazwa naszego projektu
  else if aktywuj = False then
    reg.DeleteValue(Nazwa_programu); //usunięcie wyjątku
  end;
reg.CloseKey;
end;

dzięki działa :)

0

No problem :-)

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