File 写入系统目录中的文件

File 写入系统目录中的文件,file,delphi,permissions,File,Delphi,Permissions,我一直试图在电脑的系统目录中写入一个文件,但我无法让它工作;我该怎么做才能获得必要的权限?我需要更新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;

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

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


在开发过程中,一定要以管理员权限启动DelphiIDE。否则,当您尝试在IDE之外运行/调试程序时,它可能会崩溃。

您可以按如下所述向应用程序添加清单:

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


在开发过程中,一定要以管理员权限启动DelphiIDE。否则,当您尝试在IDE之外运行/调试程序时,它可能会崩溃。

很可能是因为此问题。假设你真的是在高位运行,那么你将拥有足够的权限。但32位进程会看到32位系统文件夹SysWOW64。那可能就是你的文件要登陆的地方

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


我不太清楚为什么要使用传统的OpenFile。使用CreateFile是正常的。甚至是TFileStream

最有可能的情况是。假设你真的是在高位运行,那么你将拥有足够的权限。但32位进程会看到32位系统文件夹SysWOW64。那可能就是你的文件要登陆的地方

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


我不太清楚为什么要使用传统的OpenFile。使用CreateFile是正常的。甚至是TFileStream

未以管理员身份登录,操作系统不允许这样做。这不是德尔菲的问题。你的应用程序必须由管理员运行。我以管理员身份运行,但它仍然没有写入系统目录(windows 8)。我已经知道这不是Delphi问题lol(很抱歉,如果我发布的源代码让人困惑)。对我来说,这看起来像是可疑代码,但问题是操作系统权限,如果没有管理员权限,则无法设置它们。这里有几十篇关于操作系统特权的帖子;在
[windows]file privilege
上搜索前面的一些问题。在Vista及更高版本上,您还需要获得
UAC高程
,未以管理员身份登录,操作系统不允许这样做。这不是德尔菲的问题。你的应用程序必须由管理员运行。我以管理员身份运行,但它仍然没有写入系统目录(windows 8)。我已经知道这不是Delphi问题lol(很抱歉,如果我发布的源代码让人困惑)。对我来说,这看起来像是可疑代码,但问题是操作系统权限,如果没有管理员权限,则无法设置它们。这里有几十篇关于操作系统特权的帖子;在
[windows]file privilege
上搜索前面的一些问题。在Vista和更高版本上,您还需要获得
UAC高程
我刚刚将代码注入资源管理器,并让它为我工作(更好的方法,尽管我的av检测到它是病毒imao).我只是将代码注入浏览器,让它为我完成工作(更好的方法,尽管我的av检测到它是病毒imao)。