Форум: "Сети";
Текущий архив: 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