我寫過一個正在加載到作爲本地系統運行的服務進程中的DLL。我不應該刪除我創建的文件嗎?SYSTEM文件中的CreateFile/Close句柄後DeleteFile失敗
HANDLE hFile = CreateFileW(m_achTempFilePath, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) ;
成功。 然後我跑CloseHandle(hFile)
和DeleteFile(m_achTempFilePath)
刪除文件失敗,拒絕訪問。
我執行以下操作並將&sa
作爲安全屬性傳遞給CreateFile
,然後DeleteFile
成功。但是這給了大家完全的控制權。我不想那樣。
這樣做的正確方法是什麼?
CDacl dacl;
dacl.AddAllowedAce(Sids::World(), SPECIFIC_RIGHTS_ALL | STANDARD_RIGHTS_ALL) ;
CSecurityDesc sd;
sd.SetDacl(dacl);
CSecurityAttributes sa;
sa.Set(sd, true);
對於創建臨時文件的文件夾,其權限是否可以設置爲明確拒絕「刪除」操作(同時允許其他操作)?要檢查這一點,您可以在資源管理器中深入查看文件夾的「屬性」上下文菜單,並繼續爲SYSTEM用戶選擇「高級」視圖,直到看到與其他操作分離的「刪除」。 –
如何在不取得目錄所有權的情況下查看系統用戶的權限?我按照說明[這裏](http://superuser.com/questions/172437/run-explorer-in-system-account-on-windows-vista-or或7-using-sysinternal-s-psexec)。它將以系統的形式啓動開始菜單,但它始終會啓動瀏覽器UI,以我的本地用戶帳戶遍歷文件系統。 如果您想檢查本地計算機,則目錄爲c:\ ProgramData \ Microsoft \ Search \ Data \ Temp \ usgthrsvc。 – tdemay
正確...我忘了。我轉移到C:\ ProgramData ...我在公共應用程序數據目錄下創建了一個目錄。可以在那裏創建目錄和文件,但不能在以本地系統運行的服務帳戶中刪除它們。 – tdemay