我一直在尝试写入计算机上系统目录中的文件,但我无法让它工作;我该怎么做才能获得必要的权限?我需要更新 SS 而无需手动更改每台电脑的权限...
var
z: THandle;
...
begin
....
z:=OpenFile('myfile.scr',a,OF_WRITE);
FileWrite(z,buf[16],3124);
FileClose(z);
end;
我一直在尝试写入计算机上系统目录中的文件,但我无法让它工作;我该怎么做才能获得必要的权限?我需要更新 SS 而无需手动更改每台电脑的权限...
var
z: THandle;
...
begin
....
z:=OpenFile('myfile.scr',a,OF_WRITE);
FileWrite(z,buf[16],3124);
FileClose(z);
end;
这很可能是文件系统重定向器关闭。假设您确实在提升,那么您将拥有足够的权利。但是 32 位进程会看到 32 位系统文件夹 SysWOW64。那可能就是您的文件所在的位置。
如果您确实需要写入 64 位系统目录,请运行 64 位进程,或写入sysnative 别名。
我不太确定您为什么使用旧版 OpenFile。使用 CreateFile 是正常的。甚至 TFileStream。
您可以将清单添加到您的应用程序,如下所述:
如何将清单 <requestedPrivileges> 信息添加到 delphi 项目中
这样,在应用程序启动时,Windows UAC 将提示管理员权限。这篇文章是关于 Delphi XE 的,但我已经在 Delphi 2005 上成功测试了清单。
在开发过程中,请务必以管理员权限启动 Delphi IDE。否则,当您尝试从 IDE 运行/调试程序时,它可能会崩溃。