Entwickler-Ecke

Internet / Netzwerk - Internet am lokalen PC deaktivieren


LittleBen - Sa 13.10.12 14:31
Titel: Internet am lokalen PC deaktivieren
Guten Mittag,
ich suche eine Möglichkeit, den Internetzugriff auf einem PC zu verhindern. Dabei ist mir z.B. in den Sinn gekommen, einfach das dafür zuständige Gerät vom Computer zu trennen, wie z.B. den Fritz Wlan Stick. Jedoch habe ich keine Ahnung, wie ich das im Programm umsetzen kann. Es gibt wahrscheinlich auch noch andere, viel bessere Möglichkeiten(?).
Kann mir jemand helfen?

Viele Grüße,
Littleben


Narses - Sa 13.10.12 14:33

Moin!

Nimm das Default-Gateway aus der IP-Config raus, dann geht nur noch LAN. :idea:

cu
Narses


Delete - So 14.10.12 21:15

dot3svc
Der Wired Autoconfig Service muss aktiv sein.

wlansvc
Automatische WLAN-Konfiguration muss aktiv sein.

services.msc starten
Folgende Dienste auf Starttyp Automatisch stellen:

Automatische Konfiguration (verkabelt)
Automatische WLAN-Konfiguration

Für den Kommando-Interpreter:


WLAN ON:
netsh wlan delete filter permission=denyall networktype=infrastructure
netsh wlan delete filter permission=denyall networktype=adhoc
netsh wlan set blockperiod 0

WLAN OFF:
netsh wlan add filter permission=denyall networktype=infrastructure
netsh wlan add filter permission=denyall networktype=adhoc
netsh wlan set blockperiod 60 //60 Minuten Sperre

LAN ON:
netsh lan set blockperiod 0

LAN OFF:
netsh lan set blockperiod 60 //60 Minuten Sperre

Überprüfung:
netsh wlan show settings
netsh lan show settings

Beispiele in DELPHI:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
begin //wlan on
ShellExecute(Application.Handle, nil'netsh',
'wlan delete filter permission=denyall networktype=infrastructure'nil, SW_HIDE);
end;
.
begin //wlan off
ShellExecute(Application.Handle, nil'netsh',
'wlan add filter permission=denyall networktype=infrastructure'nil, SW_HIDE);
end;


Delete - Mo 15.10.12 20:12


How do I disable a network connection using WMI?
[https://theroadtodelphi.wordpress.com/2011/10/30/wmi-tasks-using-delphi-%E2%80%93-networking/]


LittleBen - So 21.10.12 10:49

Hallo,
vielen Dank für die Lösungsvorschläge. Letztendlich hat die Funktion "How do I disable or enable a NIC?" von der Seite die user profile iconhathor genannt hat wunderbar funktioniert.

Noch einen schönen Sonntag,
Littleben


hungrycoder - Di 08.01.13 23:21

Hallo zusammen,
wollte den Code "How do I disable or enable a NIC" auch verwenden nur nimmt er bei mir die Klasse "Win32_NetworkAdapter" in die Uses nicht auf. Kann sie anscheinend nicht auflösen. Wo liegt das Problem? Muss ich etwas anderes reintragen?

hungrycoder


LittleBen - Do 10.01.13 16:19

Versteh dein Problem nicht ganz...

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
unit U_Main;

interface

uses
  Forms, ComObj, Windows, ShellApi, Messages, SysUtils, StrUtils, Variants, Classes,
  Graphics, Controls, Dialogs, Registry, Math, ActiveX, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    Button2: TButton;
    Button1: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Enable a NIC
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost''root\CIMV2''''');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter Where NetEnabled=False','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    FWbemObject.Enable();
    FWbemObject:=Unassigned;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Disable a NIC
const
  wbemFlagForwardOnly = $00000020;
var
  FSWbemLocator : OLEVariant;
  FWMIService   : OLEVariant;
  FWbemObjectSet: OLEVariant;
  FWbemObject   : OLEVariant;
  oEnum         : IEnumvariant;
  iValue        : LongWord;
begin;
  FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator');
  FWMIService   := FSWbemLocator.ConnectServer('localhost''root\CIMV2''''');
  FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter Where NetEnabled=True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    FWbemObject.Disable();
    FWbemObject:=Unassigned;
  end;
end;

end.


hungrycoder - Sa 12.01.13 15:35

@LittleBen

Genau so habe ich es ja auch... Leider bekomme ich da den Fehler: "EOleException: Die Anfrage ist ungültig".
Habe WinXP Pro SP3.
Woran könnte es liegen? Kann mir nicht vorstellen, dass es wegen dem Systems ist, oder etwa doch?


LittleBen - Sa 12.01.13 15:59

Da muss ich dich wohl enttäusche :P
Siehe hier
http://msdn.microsoft.com/en-us/library/windows/desktop/aa390385%28v=vs.85%29.aspx
und
http://msdn.microsoft.com/en-us/library/windows/desktop/aa390364%28v=vs.85%29.aspx hier.

Dann wirst du folgendes sehen:
Zitat:
Minimum supported client
Windows Vista [desktop apps only]

Minimum supported server
Windows Server 2008 [desktop apps only]


hungrycoder - Sa 12.01.13 16:11

@LittleBen
Danke dir, habs gerade mit Win7 ausprobiert da gehts -.-
Du weißt nicht zufällig eine Lösung, welche unter XP funktioniert?


LittleBen - Sa 12.01.13 16:21

Leider kenne ich auch keine andere Möglichkeit. Du könntest noch user profile iconNarses Idee versuchen umzusetzen. Ist zwar keine schöne Methode, aber müsste funktionieren.


hungrycoder - So 13.01.13 22:35

Ich hab in Delphi noch nicht so viel mit Netzwerk zu tun gehabt, deswegen weiß ich auch nicht, ob es da eine einfache Möglichkeit gibt das Default-Gateway rauszunehmen. Habe jetzt aber schon eine Weile gesucht(2 Stunden). Muss ich wirklich die ganzen Verbindungsdaten löschen? Wenn ja würde ich das ganze mit Batch machen, gibt es da auch eine vernünftige Lösung mit Delphi?


LittleBen - So 13.01.13 22:45

Da ich mich damit selbst nicht so super auskenne, muss ich die Frage wohl an user profile iconjaenicke weiterleiten, denn er hat normalerweise auf alles eine Antwort :P


hungrycoder - So 13.01.13 22:52

Alles klar :), dann hoffe ich mal, dass jaenicke bald vorbeischaut. Aber vielleicht weiß ja noch jemand anders, wie man es am einfachsten/besten lösen könnte.


thepaine91 - Mo 14.01.13 14:32

Hier werden noch alternativen zur Lösung ab Windows Vista aufgelistet: http://slecluyse.wordpress.com/2010/08/18/enable-or-disable%C2%A0nics/