16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE^2:Wininit.iniの使用例"
この発言は #00806 Satobe さんのRE:Wininit.iniの使用例 に対するコメントです
この発言に対し以下のコメントが寄せられています
#01068 Tiny Mouse さん RE^3:Wininit.iniの使用例
Satobe さん、おはようございます。(^_^)
> #フォルダの削除は出来ない、なんて噂を聞いたこともあります...
フォルダは削除出来ません。(確認済み)
でも以下のレジストリキーにコマンドを書くと、「一回だけ」起動時に実行して
くれるんで、ここにフォルダを削除するコマンドを書けば代替できます。
キー:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
名前:FolderDel <- なんでもいい
値 :command.com /crd c:\aaa <-この場合フォルダ"c:\aaa"を削除
(起動時に一瞬DOS窓が開くけど。(^_^;)
> また WinNTでは MoveFileEx APIに MOVEFILE_DELAY_UNTIL_REBOOT
> フラグを指定することで、再起動時の削除やリネームが行えます。
> #こちらはフォルダの削除も可能らしい...#未確認ですが (^^;
こちらだとフォルダも削除出来ます。(確認済み)
それから順番が前後しますが
> というわけで、TIniFileや WritePrivateProfileString APIを使
> わずに、すべてテキストファイル処理で行うべきぢゃないかと思
自作のアンインストーラで書いてる処理を、サンプルとして書いときます。
(削除のパターンだけですが。(^_^ゞ)
例)ボタンを押すと「Wininit.ini」にファイル削除の設定を書き込む。
削除するファイル:C:\Program Files\Company\Project\File1.exe
C:\Program Files\Company\Project\File2.exe
procedure TForm1.Button1Click(Sender: TObject);
var
SectionPos: Integer;
Wininit: String;
TempPath: array[0..MAX_PATH] of Char;
begin
// Wininit.ini のパス名を取得
GetWindowsDirectory(TempPath, SizeOf(TempPath));
Wininit := TempPath + '\Wininit.ini';
// 編集用のStringListを作成
With TStringList.Create do
Try
// Wininit.ini が既にあれば読み込む
if FileExists(Wininit) then
LoadFromFile(Wininit);
// [Rename]セクションの位置を取得
SectionPos := IndexOf('[Rename]');
// [Rename]セクションが無ければ追加する
if SectionPos < 0 then
SectionPos := Add('[Rename]');
// ファイルの短いパス名を取得
GetShortPathName('C:\Program Files\Company\Project\File1.exe',
TempPath, SizeOf(TempPath));
// 削除する設定の行を追加(SectionPosに +1, +2・・・と足していく)
Insert(SectionPos + 1, 'Nul=' + TempPath);
// 以下ファイルの数だけ繰り返す
GetShortPathName('C:\Program Files\Company\Project\File2.exe',
TempPath, SizeOf(TempPath));
Insert(SectionPos + 2, 'Nul=' + TempPath);
// Wininit.ini を保存する
SaveToFile(Wininit);
Finally
Free;
end;
end;
JBC01362 アトリエ まっちゃん
Original document by Atelier Macchan 氏 ID:(JBC01362)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|