我需要知道我的程序是否可以从它运行的位置将文件写入磁盘(HDD、软盘、闪存、CD)。我试过类似的东西:
{$I-}
Rewrite(myFile);
{$I+}
Result:= (IOResult = 0);
问题是,如果磁盘是只读的,Windows 会给我一条错误消息,告诉我
“appName.exe - 写保护错误磁盘无法写入,因为它被写保护。请从驱动器 D: 中的卷 USB_BOOT 中删除写保护。取消 TryAgain Continue”
如何在不引发任何错误/警告消息的情况下测试写访问?谢谢。
编辑:
行。“错误”与上述代码无关。我只以为它出现在那里。我将代码移动到只读磁盘并从那里运行它。该错误出现在名为“CreateShortcutEx”的函数中,在这一行:
MyPFile.Save(PWChar(WFileName),False);
MyPFile 声明如下:
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
Directory : String;
WFileName : WideString;
MyReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
.....
end;
那么,如果 WFileName 参数是 "C:\documents and settings\bla bla" ,为什么 MyPFile 会尝试写入应用程序的驱动器(只读的驱动器)?