Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

Как в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
5-1126328242
Дельфин
2005-09-10 08:57
2006.03.19
Создание компонентов в Delphi 6 (полный перевод)


6-1133271863
WebSQLNeeder
2005-11-29 16:44
2006.03.19
Как програмно изменить размеры фрейма вна странице в TWebBrowser


2-1141105672
nap<>
2006-02-28 08:47
2006.03.19
Про GradientFill


15-1140678678
antonn
2006-02-23 10:11
2006.03.19
Рашифровка ника


2-1141239855
Groof
2006-03-01 22:04
2006.03.19
Как проверить бит?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский