Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Disable sit.adapteru přes Delphi

Zdravím.
Poradite?
Toto mi povypina všechny sit, adaptery v PC.
Jak s toho vyčtu, ktery adapter vypinam?
Tad bych jem lan [00000000] Realtek PCIe GBE Family Controller

procedure TForm1.Button1Click(Sender: TObject);
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.Enable();
    FWbemObject:=Unassigned;
  end;
end;

Děkují

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
V tom cykle na konci - FWbemObject je objekt tohoto typu http://msdn.microsoft.com/en-us/library/aa3…
MM.. 06.03.2014 14:34
MM..
Tak jsem vyzkoušel ten neupraveny zdrojak co jsem dal uplně nahoře. Dokazal zakazat všech Realtek si… nový
Leo 11 06.03.2014 16:30
Leo 11
Ešte skús prezradiť či používaš DHCP, alebo nie. Ak na PC používaš DHCP použi Win32_NetworkAdapterCo… nový
pme 06.03.2014 19:23
pme
Toto vše testova už na PC s těmi Intel sitovkamí. Tan Váš poslední zdrajaček funguje na adaptery s… poslední
Leo 11 07.03.2014 07:01
Leo 11

Tak jsem vyzkoušel ten neupraveny zdrojak co jsem dal uplně nahoře.
Dokazal zakazat všech Realtek sitovky a i virtualni od VMware.

Spustil jsem ho na počitačich s intel sitovkou a nechyta se ani pod Win 8 ani pod XP.
Tak moc dik za ochotu ale budu muset zustat u toho bataku.

Ešte skús prezradiť či používaš DHCP, alebo nie.
Ak na PC používaš DHCP použi Win32_NetworkAdapterConfiguration a metódu ReleaseDHCPLease.
Ak nepoužívaš DHCP nemôžeš pomocou WMI zakázať sieťové pripojenie.

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_NetworkAdapterConfiguration Where IPEnabled = True','WQL',wbemFlagForwardOnly);
  oEnum         := IUnknown(FWbemObjectSet._NewEnum) as IEnumVariant;
  while oEnum.Next(1, FWbemObject, iValue) = 0 do
  begin
    FWbemObject.ReleaseDHCPLease();
    FWbemObject:=Unassigned;
  end;
end;

Pre znovu povolenie sieťového pripojenia použi RenewDHCPLease. Tiež môžeš pre všetky DHCP prenájmy(leases - neviem ako to preložiť...) použiť metódy ReleaseDHCPLeaseAll a RenewDHCPLeaseAll.

A hlavne si môžeš v slučke while..end vypisovať pre seba názov adaptéra a pýtať sa či zakázať alebo nie...

Toto vše testova už na PC s těmi Intel sitovkamí.

Tan Váš poslední zdrajaček funguje na adaptery s DHCP IP, ale nezakaže je, jen jim odebere IP.

Ten kod co jsem tu dal uplně nahoře, co by měl vypnout všechny sitovky nefunguje ani na Lan, kde je static IP

Zustane to viset na.
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter Where NetEnabled=True','WQL',wbemFlagForwardOnly);
S chybou.
First chance exception at $7C812AEB. Exception class EOleException with message 'Neplatný dotaz'. Process Project1.exe (1980)

Když zadam přimo nazev adapteru ktery jsem ziskal přes CMD - ipconfig -all
FWbemObjectSet:= FWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter where name= "Intel(R) PRO/1000 PL Network Connect"','WQL',wbemFlagForwardOnly);
Tak to zas na něm zustane viset.
Project Project1.exe raised exception class EVariantInvalidOpError with message 'Invalid variant operation'.

Zpět do poradny Odpovědět na původní otázku Nahoru