2013-04-05 161 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運行/調試程序時,它可能會崩潰。