2013-01-16 271 views
1

我的程序中使用它創建數據文件庫,有一些用戶採取了錯誤的「以管理員身份運行」我的程序有問題,結果是與管理員擁有者創建了一些數據文件,普通用戶以後不能編輯它。我正在尋找一種方法'放棄'管理員權限,允許我的程序繼續運行,例如沒有用戶'以管理員身份運行'?我怎樣才能做到這一點?C++降管理員權限

+0

可能需要修復文件權限問題嗎? –

+0

是的,但該文件是通過第三個庫中創建,所以我不能指定文件創建安全屬性。我正在尋找一種方法來更改默認文件權限,也許刪除管理員權限會有所幫助。 – secmask

回答

1

我最終以此爲目標,讓新對象的擁有者成爲當前用戶。

if(GetTokenInformation(hToken,TokenUser,tu,buff.size(),&rw)){  
    if(!SetTokenInformation(hToken,TokenOwner,tu,buff.size())){  
    }  
} 
+0

好的解決方案,我不知道你可以做到這一點。 – Ben

2

要做你在問什麼,你需要檢測你是否以管理員身份運行,如果是這樣,創建一個受限令牌,並使用該令牌重新啓動程序。是

才達到類似的結果的其他方式如下。

對於該組的成員,文件的所有者默認設置爲管理員組。此設置可以通過本地安全策略進行控制:

查看更多在這裏:

或者,使用CreateFile時,可以指定所有者創建文件時,使用SECURITY_DESCRIPTOR,並使其成爲用戶或他的任何組。

+0

小心測試沒有UAC一臺機器上,這裏是admin用戶的 – Deanna

+0

另一種選擇是等待第三方庫創建該文件,然後使用['SetFileSecurity()'](HTTP不受限令牌:// MSDN .microsoft.com/EN-US需要/庫/窗/臺式機/ aa379577.aspx)來改變它的安全信息。 –