2013-04-05 158 views
0

我一直在试图写入系统目录中的一个文件在我的计算机',但我不能得到它的工作;我会做什么来获得必要的权限?需要而无需手动更改对每一个计算机的权限,以更新SS ...写入系统目录中的文件

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

操作系统不允许以管理员身份登录。这不是德尔福问题。您的应用必须由管理员运行。 – 2013-04-05 18:30:41

+0

我作为管理员运行它,它仍然没有写入系统目录(Windows 8)。而且我已经知道这不是德尔福问题哈哈(抱歉,如果我发布的来源混淆人)。 – user0 2013-04-05 18:31:19

+0

它看起来像我的可疑代码,但问题是操作系统权限,并且您不能在没有管理员权限的情况下设置它们。这里有几十篇关于操作系统权限的文章;在这里搜索“[windows]文件权限”,了解以前的一些问题。 – 2013-04-05 18:35:09

回答

2

很可能这是file system redirector的下降。假设你真的在跑步,那么你将拥有足够的权利。但是一个32位进程会看到32位系统文件夹SysWOW64。这可能是你的文件登陆的地方。

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

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

+0

我只是将代码注入到资源管理器中,并让它为我做了工作(更好的方法,尽管我的AV检测到它是病毒imao)。 – user0 2013-04-05 21:34:51

1

你可以添加一个清单给你的应用程序如下所述:

How to add manifest <requestedPrivileges> info into delphi project

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

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