Toon posts:

[delphi 6] boot.ini problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zal even in het kort uitleggen wat ik wil. Ik switch met mijn pc heel vaak tussen Windows 2000 server en Windows 2000 Professional. Bijde staan dus ook op mijn systeem geinstalleerd en zijn te benaderen via het standaart bootmenu wat win2k aanmaakt. Ik gebruik mijn computer op afstand en kan dus niet met het opstarten van de pc even een OS kiezen welke ik wil booten, de oplossing tot nu toe is als ik bv van win2kprof. naar win2kserv. wil switchen dan zet ik even win2k server op default (standaart) in het bootmenu [ systeem-geavanceerd-opstart en herstelinstellingen-standaart besturingssysteem wijzigen ] Aangezien ik vaak switch tussen die twee OS-en heb ik een delphi programma gemaakt die de boot.ini wijzigt. Maar omdat boot.ini een systeembestand is, werkt het programma niet en krijg ik de melding : File acces denied. Dit snap ik niet want in kladblok kun je de file wel editen en opslaan ! Bovendien kun je het attribuut van boot.ini ook niet veranderen :(

Ik heb ook al geprobeerd 2 boot.ini files te maken. Eentje waar win2kprof. als default staat en eentje waar win2kserv. als default staat. Als ik die dan probeer te kopieren dmv een batch bestand krijg ik ook acces denied. Waarom kun je dan wel in kladblok de file editen ?

De code van mijn programma :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
unit cd;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tform1 = class(TForm)
    Button_win2kprof: TButton;
    Button_win2k_server: TButton;
    Label1: TLabel;
    Label2: TLabel;
    rebootknop: TButton;
    Label3: TLabel;
    procedure Button_win2kprofClick(Sender: TObject);
    procedure Button_win2k_serverClick(Sender: TObject);
    procedure rebootknopClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  form1: Tform1;
  s:text;
const
  fn='c:\boot.ini';

implementation
{$R *.dfm}

procedure Tform1.Button_win2kprofClick(Sender: TObject);
begin
AssignFile(s,fn);
  rewrite(s);
    writeln(s,'[boot loader]');
    writeln(s,'timeout=2');
    writeln(s,'default=multi(0)disk(0)rdisk(0)partition(1)\WINNT');
    writeln(s,'[operating systems]');
    writeln(s,'multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect');
    writeln(s,'multi(0)disk(0)rdisk(0)partition(3)\WINNT="Microsoft Windows 2000 Server" /fastdetect');
CloseFile(s);
end;

procedure Tform1.Button_win2k_serverClick(Sender: TObject);
begin
AssignFile(s,fn);
  rewrite(s);
    writeln(s,'[boot loader]');
    writeln(s,'timeout=2');
    writeln(s,'default=multi(0)disk(0)rdisk(0)partition(3)\WINNT');
    writeln(s,'[operating systems]');
    writeln(s,'multi(0)disk(0)rdisk(0)partition(3)\WINNT="Microsoft Windows 2000 Server" /fastdetect');
    writeln(s,'multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect');
CloseFile(s);
end;

procedure Tform1.rebootknopClick(Sender: TObject);
Begin
    WinExec(pchar('shutdown.exe -r'),SW_NORMAL);
end;

end.

Een screendumpje :
Afbeeldingslocatie: http://home.quicknet.nl/qn/prive/t.kostelijk/tweakers/bootmanager.jpg


Wie kan mij helpen ?

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op donderdag 29 november 2001 16:46 schreef specialist het volgende:
Maar omdat boot.ini een systeembestand is, werkt het programma niet en krijg ik de melding : File acces denied. Dit snap ik niet want in kladblok kun je de file wel editen en opslaan !
Mijn kladblok kan dat niet hoor.. niet zonder dat je eerst de attributen verandert.
Bovendien kun je het attribuut van boot.ini ook niet veranderen :(
Dat moet wel kunnen. (attrib.exe kan 't immers ook)

Verwijderd

Topicstarter
Op donderdag 29 november 2001 17:09 schreef Onno het volgende:
Dat moet wel kunnen. (attrib.exe kan 't immers ook)
Bij mij niet :-(
Als ik :
code:
1
Attrib -s c:\boot.ini

in een dos prompt uitvoer krijg ik de melding :
Bestand niet veranderd. [oftewel een el cheapo vertaling van acces denied]

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op donderdag 29 november 2001 17:19 schreef specialist het volgende:
Als ik :
code:
1
Attrib -s c:\boot.ini

in een dos prompt uitvoer krijg ik de melding :
Bestand niet veranderd.
En je hebt wel genoeg rechten om attributen te mogen veranderen voor dat bestand?

Verwijderd

Attrib -s -r -h c:\boot.ini

Verwijderd

Probeer eens attrib in de root zonder parameters dan zal je zien dat het een system en hidden file is, probeer eens attrib -h -s -r

sorry, dubbeltje :)

Verwijderd

of in delphi:
FileSetAttr('c:\boot.ini', faArchive);

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op donderdag 29 november 2001 17:29 schreef Omni het volgende:
Probeer eens attrib in de root zonder parameters dan zal je zien dat het een system en hidden file is,
Maar dan krijg je een andere fout, "Verborgen bestand wordt niet opnieuw ingesteld - C:\boot.ini". :)

Verwijderd

waarom lees je het niet op de delphi manier in, dat ini inlezen, staat op torry, gaat veel makkelijker dan dat jij doed, maja, maybe kan je nieuwe file aanmaken met notepad, genaamt boot.ini, en daar die text in zetten, maybe doed ie het dan, ik weet het niet, succes

Verwijderd

Topicstarter
Op donderdag 29 november 2001 17:29 schreef Omni het volgende:
Probeer eens attrib in de root zonder parameters dan zal je zien dat het een system en hidden file is, probeer eens attrib -h -s -r

sorry, dubbeltje :)
Juist, dat was het. Het werkt nu ! Bedankt allemaal !

[edit]
Je hoeft het trouwens maar één keer te doen. Na een reboot blijft boot.ini zijn attributen houden (en heeft dus geen h s of r meer)
Pagina: 1