2
我的程序必須以管理員身份運行並創建一些文件。如果我通過右鍵單擊圖標並選擇「以管理員身份運行」來手動運行它 - 一切正常 - 所有用戶都可以訪問創建的文件。但是,如果程序由ShellExecuteEx以「runas」動詞創建的另一個程序創建的文件沒有BUILTIN \ Users組的訪問條目。只有管理員用戶可以閱讀這些文件。如果應用程序以管理員身份運行,則會出現奇怪的文件權限
我的程序必須以管理員身份運行並創建一些文件。如果我通過右鍵單擊圖標並選擇「以管理員身份運行」來手動運行它 - 一切正常 - 所有用戶都可以訪問創建的文件。但是,如果程序由ShellExecuteEx以「runas」動詞創建的另一個程序創建的文件沒有BUILTIN \ Users組的訪問條目。只有管理員用戶可以閱讀這些文件。如果應用程序以管理員身份運行,則會出現奇怪的文件權限
爲什麼不設置接頭標誌(VC2008和更高): 接頭 - >清單 - > UAC執行級別:requireAdministrator(/電平= 'requireAdministrator')
編輯:我重新讀取該問題,並發現該問題可能與NTFS文件安全性有關。這不是你的程序的錯,但這是設計。任何創建文件和文件夾的用戶僅被授予該用戶的權限。
以管理員用戶身份登錄,創建文件夾。然後重新登錄爲另一個用戶(不管你喜歡),並嘗試訪問/讀取/寫入/刪除該文件夾 - 你不能。權限授予管理員用戶,而不授予everyone/users-group。
如果您的應用程序是「本機C++程序」或已經使用.NET API(如果您使用Visual C++),那麼這確實取決於您如何利用Windows的UAC。 – Kushal 2011-04-09 12:39:10
它是本機C++程序。僅使用WinAPI – Newbee 2011-04-09 16:35:37
我認爲嘗試修復它沒有意義。無論你做什麼,微軟都會再次搞砸它。想想看,據維基百科關於UAC的文章報道,它很可能只是設計成非常明顯地向用戶顯示Windows正在做一些關於安全性的事情,即設計成令人討厭並使事情搞砸。 – 2011-06-10 23:21:39