0

我一直在尝试写入计算机上系统目录中的文件,但我无法让它工作;我该怎么做才能获得必要的权限?我需要更新 SS 而无需手动更改每台电脑的权限...

    var
    z: THandle;
...
    begin
    ....
    z:=OpenFile('myfile.scr',a,OF_WRITE);
    FileWrite(z,buf[16],3124);
    FileClose(z);
    end;
4

2 回答 2

2

这很可能是文件系统重定向器关闭。假设您确实在提升,那么您将拥有足够的权利。但是 32 位进程会看到 32 位系统文件夹 SysWOW64。那可能就是您的文件所在的位置。

如果您确实需要写入 64 位系统目录,请运行 64 位进程,或写入sysnative 别名

我不太确定您为什么使用旧版 OpenFile。使用 CreateFile 是正常的。甚至 TFileStream。

于 2013-04-05T19:13:50.173 回答
1

您可以将清单添加到您的应用程序,如下所述:

如何将清单 <requestedPrivileges> 信息添加到 delphi 项目中

这样,在应用程序启动时,Windows UAC 将提示管理员权限。这篇文章是关于 Delphi XE 的,但我已经在 Delphi 2005 上成功测试了清单。

在开发过程中,请务必以管理员权限启动 Delphi IDE。否则,当您尝试从 IDE 运行/调试程序时,它可能会崩溃。

于 2013-04-05T18:42:58.423 回答