2011-03-20 43 views
7

在我拔出其餘的頭髮之前,我想就此獲得一些輸入。
我試圖獲得一個文件夾的所有權。我當然是以管理員身份運行該程序,因爲我可以更改資源管理器中的所有者,所以我有權利擁有所有權。取得文件或文件夾的所有權

但是,如果管理員或我的帳戶擁有它,我可以更改所有者,如果我已擁有所有權,則可以更改權限。
如果我試圖讓自己擁有一個文件,讓我們說擁有SYSTEM,那麼我得到一個未授權的指示。

我已經嘗試了一些與accesscontrol方法不同的東西,但沒有任何工作,這個最新的方法我認爲是直接由本書。

 private static void makePerm(string file, NTAccount account) 
    { 
     FileInfo finfo = new FileInfo(file); 
     FileSecurity fsecurity = finfo.GetAccessControl(); 
     //also tried it like this //fsecurity.ResetAccessRule(new FileSystemAccessRule(string.Format(@"{0}\{1}", Environment.UserDomainName.ToString(), Environment.UserDomainName.ToString()), FileSystemRights.FullControl, AccessControlType.Allow)); 
     fsecurity.SetOwner(account); 
     finfo.SetAccessControl(fsecurity); 
    } 

我想在Windows 7 btw上這個。
我在這裏錯過了什麼?

+0

你似乎什麼缺少的是系統級別高於你和管理員。 – 2011-03-20 13:59:52

+0

您確定您可以通過系統擁有的文件獲取資源管理器中的所有權嗎?你似乎這樣說,但太明確。 – 2011-03-20 14:01:46

+0

是啊我知道,但爲什麼我可以在資源管理器中將系統所有者從系統更改爲管理員,但是不能使用代碼? AFAIK管理員可以始終擁有任何東西。 – 2011-03-20 14:02:27

回答

1

您是否首先通過UAC提升您的流程?在Windows 7上,如果沒有UAC升級,您的進程將使用權限較低的令牌運行。

+0

是的。我都用提升的權限運行visual studio,我試圖手動運行exe作爲admnistrator。 – 2011-03-20 14:06:36

+1

您可能還需要明確啓用SeTakeOwnershipPrivilege。 – Luke 2011-03-20 14:47:04

8

我有同樣的問題,只是在這裏發帖給其他人誰可以來這裏尋找和我一樣:

您需要明確啓用SeTakeOwnershipPrivilege代碼盧克上面提到。我發現這個Process Privileges對處理這類事情真的很有幫助。

這裏是如何固定我的代碼:

using System; 
using System.Diagnostics; 

// ... 
using (new ProcessPrivileges.PrivilegeEnabler(Process.GetCurrentProcess(), Privilege.TakeOwnership)) 
{ 
    directoryInfo = new DirectoryInfo(path); 
    directorySecurity = directoryInfo.GetAccessControl(); 

    directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User); 
    Directory.SetAccessControl(path, directorySecurity);  
} 
+1

我知道這有點舊,但我面臨同樣的問題。感謝分享這個解決方案,它適應了我的需要。如果有人想讓別人成爲主人:那麼您還需要特權Privilege.Restore。在您將能夠更改所有者之前。如果你想獲得所有權,你可能首先需要創建一個新的FileSecurity對象,取得所有權,然後從那裏繼續: 'var fileSecurity = new FileSecurity();' 'fileSecurity.SetOwner(_owner); ' 'File.SetAccessControl(file,fileSecurity);' – philip 2014-08-19 15:54:27

+0

@philip感謝分享更新&很高興我可以提供幫助。 – Maverik 2014-08-19 16:19:45

相關問題