Var
   Form1: TForm1;
const
VWin32_DIOC_DOS_Int25 = 2;
VWin32_DIOC_DOS_Int26 = 3;
type
  TDevioctl_reg = pack record
  Reg_EBX : DWord;
  Reg_edx : DWord;
  Reg_DCX : DWord;
  Reg_EAX : DWord;
  Reg_EDI : DWord;
  Reg_ESI : DWord;
  Reg_Flags : DWord;
end;
type
  TDiskIO = pack record
  StartSektor;
  Anzahlsektoren;
  PBuffer;
end;Procedure TForm1.FormButton1Click(Sender: TObject);
Var
  x:integer;
  Deviohandle:THandle;
  BytesReturned:Dword;
  Reg: TDevioctl_Reg;
  DiskIO: TDiskIO;
  DatenBuffer: array[0..511] of Byte;
 begin
  if(length(Edit1.text) > 35) or (length(Edit1.text)=0) then
   begin
    showmessage('please enter a new dos stub text of 1 to 35 chars!');
    exit;
   end;
  with disk io do
   begin
    startsektor := 33;
    Anzahlsektoren := 1;
    PBuffer := DWord(@DatenBuffer);
   end;
  with reg do
   begin
    Reg_EAX := 0;
    Reg_EBX := DWord(@DiskIO);
    Reg_ECX := $FFFF;//怎么这个代码在win200 server中不认
   end;
  DevIOHandle := CreateFile('\.' Generic_Read,FileShare_Read or File_share_write,nil,Open_Existring,File_Attribute_Normal,0);
  If DevIOHandle <> Invalid_Handle_Value then
   begin
    DeviceIOControl(DevIOHandle,VWin32_DIOC_DOS_Int25,@Reg,SizeOF(Reg),@Reg,SizeOF(Reg),BytesReturned,nil);
  For x := 80 to 80 + Length(Edit1.text) do
   begin
    DateBuffer[x] := ord(Edit1.text[x-79]);
   end;
   DeviceIOControl(DevIOHandle,VWin32_DIOC_DOS_Int26@Reg,SizeOF(Reg),@Reg,SizeOF(Reg),BytesReturned,nil);
   CloseHandle(DevIOHandle);
  end;
 end;Procedure TForm1.FormCreate(Sender : TObject);
var
   x : Byte;
 begin
  form1.caption := '';
  For x := 80 to 115 do
   begin
    Form1.caption := Form1.caption + char(Pointer(Ainstance+x)^);
   end;
  end;
end.
__________________________________________________________________________
这段代码也是我在别的地方抄下来的,原文(环境:WIN98,D5)EXE文件在软盘上运行
但是我拿过来却没有它说的效果啊
运行以后窗体上的Form1.Edit1.Text应该可以修改的
是通过直接修改磁盘的方法做的,但是没有效果,大家改改
   end;
 end;