Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

Как в Delphi изменить IP и MAC-адреса сетевой карты?   Найти похожие ветки 

 
Volf_555   (2005-11-29 02:48) [0]

Как в Delphi изменить IP и MAC-адреса сетевой карты?


 
Васяня   (2005-11-29 04:55) [1]

а исходник перебивающий серийник винта дать?


 
Lamer@fools.ua ©   (2005-11-29 08:46) [2]

>изменить IP
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/ip_helper_function_reference.asp

>MAC-адреса
Нельзя, AFAIK.


 
Alex Konshin ©   (2005-11-29 14:17) [3]

MAC адрес на некоторых картах меняется, но стандартного API для этого нет и быть не должно.


 
Shurshik   (2005-11-30 18:04) [4]

API нет, зато есть WMI-класс Win32_NetworkAdapter (вроде бы так называется - под рукой нет MSDN). Создаём его, а уж у него есть подходящие методы. Любые свойства сетевого адаптера прочитать и поставить этим классом. А там обычно есть свойство Сетевой адрес - это MAC и есть. Другое дело, что этот MAC не прошивается в сетевуху.


 
Volf_555   (2005-12-03 13:10) [5]

А какой модуль подключить чтобы работать с Win32_NetworkAdapter?


 
VirEx ©   (2005-12-03 20:07) [6]

во первых нужно получить WbemScripting_TLB.pas в Delphi 7:
Project - Import Type Library ... - Microsoft WMI Scripting v1.2 Library


 
VirEx ©   (2005-12-03 20:08) [7]

файл Unit1.pas
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, OleServer, WbemScripting_TLB, ActiveX,
 ExtCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListView1: TListView;
   SWbemLocator1: TSWbemLocator;
   Bevel1: TBevel;
   StatusBar1: TStatusBar;
   ComboBox1: TComboBox;
   Panel1: TPanel;
   EdServer: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   EdUser: TEdit;
   Label3: TLabel;
   EdPassword: TEdit;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
   procedure ShowProp(SProp: ISWbemProperty);
   procedure GetProp(Win32ClassName: string;Server_,User_,Password_:string);
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 ListItem:   TListItem;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 GetProp(ComboBox1.Text,EdServer.Text,EdUser.Text,EdPassword.Text);
end;

procedure TForm1.GetProp(Win32ClassName: string;Server_,User_,Password_:string);
var
 Service:             ISWbemServices;
 ObjectSet:           ISWbemObjectSet;
 SObject:             ISWbemObject;
 PropSet:             ISWbemPropertySet;
 SProp:               ISWbemProperty;

 PropEnum, Enum:      IEnumVariant;
 TempObj:             OleVariant;
 Value:               Cardinal;
 Column:              TListColumn;
 ListView:            TListView;
begin
 ListView:= ListView1;

 StatusBar1.SimpleText:= " progress";
 ListView.Items.BeginUpdate;
 ListView.Items.Clear;
 ListView.Columns.Clear;//очищаем заголовки
 //Service:= SWbemLocator1.ConnectServer(".", "root\CIMV2", "", "", "", "", 0, nil);
 Service:= SWbemLocator1.ConnectServer(Server_, "root\CIMV2",User_, Password_, "", "", 0, nil);

 SObject:= Service.Get(Win32ClassName, wbemFlagUseAmendedQualifiers, nil);
 ObjectSet:= SObject.Instances_(0, nil);
 Enum:= (ObjectSet._NewEnum) as IEnumVariant;

 while (Enum.Next(1, TempObj, Value) = S_OK) do
 begin
   SObject:= IUnknown(TempObj) as SWBemObject;
   PropSet:= SObject.Properties_;
   PropEnum:= (PropSet._NewEnum) as IEnumVariant;
   ListItem:= ListView.Items.Add;
 // свойства
   StatusBar1.SimpleText:= StatusBar1.SimpleText + ".";
   while (PropEnum.Next(1, TempObj, Value) = S_OK) do
   begin
     SProp:= IUnknown(TempObj) as SWBemProperty;
     if ListView.Items.Count = 1 then
     begin
       Column:= ListView.Columns.Add;
       Column.Width:= 100;
       Column.Caption:= SProp.Name;
     end;
     ShowProp(SProp);
   end;
 end; { while }
 ListView.Items.EndUpdate;
 StatusBar1.SimpleText:= " Done";
end;

procedure TForm1.ShowProp(SProp: ISWbemProperty);
var
 StrValue: string;
 Count: Cardinal;
begin
 StrValue:= "";
 if VarIsNull(SProp.Get_Value) then
   StrValue:= "<empty>"
 else
   case SProp.CIMType of
//******************************************************************//
     wbemCimtypeUint8, wbemCimtypeSint8, wbemCimtypeUint16, wbemCimtypeSint16,
     wbemCimtypeUint32, wbemCimtypeSint32, wbemCimtypeSint64:
     if VarIsArray(SProp.Get_Value) then
     begin
       if VarArrayHighBound(SProp.Get_Value, 1) > 0 then
         for Count:= 1 to VarArrayHighBound(SProp.Get_Value, 1) do
           StrValue:= StrValue + " " + IntToStr(SProp.Get_Value[Count]);
     end
     else
       StrValue:= IntToStr(SProp.Get_Value);
//******************************************************************//
     wbemCimtypeReal32, wbemCimtypeReal64:
       StrValue:= FloatToStr(SProp.Get_Value);
//******************************************************************//
     wbemCimtypeBoolean:
       if SProp.Get_Value then
         StrValue:= "True"
       else
         StrValue:= "False";
//******************************************************************//
       wbemCimtypeString, wbemCimtypeUint64:
         if VarIsArray(SProp.Get_Value) then
         begin
           if VarArrayHighBound(SProp.Get_Value, 1) > 0 then
             for Count := 1 to VarArrayHighBound(SProp.Get_Value, 1) do
               StrValue:= StrValue + " " + SProp.Get_Value[Count];
         end
         else
           StrValue:=  SProp.Get_Value;
//******************************************************************//
       wbemCimtypeDatetime:
         StrValue:=  SProp.Get_Value;
//******************************************************************//
       wbemCimtypeReference:
       begin
//
       end;
//******************************************************************//
         wbemCimtypeChar16:
           StrValue:= "16-bit char";
//******************************************************************//
         wbemCimtypeObject:
           StrValue:= "CIM Object";
//******************************************************************//
     else
       MessageBox(0, PChar("Unknown type"), PChar(Form1.Caption), MB_OK);
   end; {case}
   if ListItem.Caption = "" then
     ListItem.Caption := StrValue
   else
     ListItem.SubItems.Add(StrValue);
end;

end.


 
VirEx ©   (2005-12-03 20:08) [8]

файл Unit1.dfm:
object Form1: TForm1
 Left = 198
 Top = 110
 AutoScroll = False
 Caption = "VirEx: WMI info"
 ClientHeight = 292
 ClientWidth = 316
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 ShowHint = True
 DesignSize = (
   316
   292)
 PixelsPerInch = 96
 TextHeight = 13
 object Bevel1: TBevel
   Left = 0
   Top = 241
   Width = 316
   Height = 30
   Align = alClient
 end
 object Button1: TButton
   Left = 144
   Top = 247
   Width = 169
   Height = 21
   Anchors = [akLeft, akBottom]
   Caption = #1055#1086#1083#1091#1095#1080#1090#1100" "#1089#1074#1086#1081#1089#1090#1074#1072" "#1082#1083#1072#1089#1089#1072
   TabOrder = 0
   OnClick = Button1Click
 end
 object ListView1: TListView
   Left = 0
   Top = 81
   Width = 316
   Height = 160
   Align = alTop
   Anchors = [akLeft, akTop, akRight, akBottom]
   Columns = <>
   GridLines = True
   TabOrder = 1
   ViewStyle = vsReport
 end
 object StatusBar1: TStatusBar
   Left = 0
   Top = 271
   Width = 316
   Height = 21
   Panels = <>
 end
 object ComboBox1: TComboBox
   Left = 3
   Top = 247
   Width = 137
   Height = 21
   Anchors = [akLeft, akBottom]
   ItemHeight = 13
   TabOrder = 3
   Text = "Win32_Fan"
   Items.Strings = (
     "Win32_Fan"
     "Win32_TemperatureProbe"
     "Win32_Process"
     "Win32_Processor"
     "Win32_ComputerSystem"
     "Win32_OperatingSystem"
     "Win32_DiskDrive"
     "Win32_DiskPartition"
     "Win32_VideoController"
     "Win32_Keyboard"
     "Win32_PointingDevice"
     "Win32_CDROMDrive"
     "Win32_NetworkAdapter"
     "Win32_NetworkAdapterConfiguration"
     "Win32_LogicalMemoryConfiguration"
     "Win32_PageFile"
     "Win32_NTLogEventComputer"
     "Win32_ShortCutFile")
 end
 object Panel1: TPanel
   Left = 0
   Top = 0
   Width = 316
   Height = 81
   Align = alTop
   TabOrder = 4
   object Label1: TLabel
     Left = 8
     Top = 8
     Width = 37
     Height = 13
     Caption = #1057#1077#1088#1074#1077#1088
   end
   object Label2: TLabel
     Left = 8
     Top = 32
     Width = 96
     Height = 13
     Caption = #1048#1084#1103" "#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1103
   end
   object Label3: TLabel
     Left = 8
     Top = 56
     Width = 112
     Height = 13
     Caption = #1055#1072#1088#1086#1083#1100" "#1087#1086#1083#1100#1079#1086#1074#1072#1090#1077#1083#1103
   end
   object EdServer: TEdit
     Left = 128
     Top = 3
     Width = 185
     Height = 21
     Hint = #1048#1084#1103" "#1089#1077#1088#1074#1077#1088#1072" (. - "#1083#1086#1082#1072#1083#1100#1085#1099#1081" "#1082#1086#1084#1087#1100#1102#1090#1077#1088"), "#1085#1072#1087#1088#1080#1084#1077#1088": UserComp"
     TabOrder = 0
     Text = "."
   end
   object EdUser: TEdit
     Left = 128
     Top = 27
     Width = 185
     Height = 21
     TabOrder = 1
   end
   object EdPassword: TEdit
     Left = 128
     Top = 51
     Width = 185
     Height = 21
     TabOrder = 2
   end
 end
 object SWbemLocator1: TSWbemLocator
   AutoConnect = False
   ConnectKind = ckRunningOrNew
   Left = 600
   Top = 48
 end
end


 
VirEx ©   (2005-12-03 20:11) [9]

ну и конечно же файл WMIInfo.dpr :)
program WMIInfo;

uses
 Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
end.

это пример как получить из различных классов все свойства и методы, в том числе и тот который ты хочешь использовать для подмены MAC"а



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.028 c
5-1127313019
Гость111
2005-09-21 18:30
2006.03.19
разница TStringGrid и TDrawGrid


11-1121813528
lundeholm
2005-07-20 02:52
2006.03.19
Want a simple KOLFTP example


15-1140451333
stud
2006-02-20 19:02
2006.03.19
звуки для программы


15-1140878464
Ega23
2006-02-25 17:41
2006.03.19
С Днём рождения! 25 февраля


3-1138093925
BAX
2006-01-24 12:12
2006.03.19
Коннект к базе?