【发布时间】:2010-10-18 20:09:33
【问题描述】:
我需要知道我的程序是否可以从它运行的位置将文件写入磁盘(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 会尝试写入应用程序的驱动器(只读的驱动器)?
【问题讨论】: