Windows中是否有類似於Linux的chown的API?在Windows中更改文件所有者
5
A
回答
3
從這裏摘自:http://www.perlmonks.org/?node_id=70562
// #includes omitted for the sake of sanity
HANDLE token;
char *filename = "somefile.txt";
char *newuser = "someuser";
DWORD len;
PSECURITY_DESCRIPTOR security = NULL;
PSID sidPtr = NULL;
int retValue = 1;
// Get the privileges you need
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &token)) {
SetPrivilege(token, "SeTakeOwnershipPrivilege", 1);
SetPrivilege(token, "SeSecurityPrivilege", 1);
SetPrivilege(token, "SeBackupPrivilege", 1);
SetPrivilege(token, "SeRestorePrivilege", 1);
} else retValue = 0;
// Create the security descriptor
if (retValue) {
GetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security, 0, &len);
security = (PSECURITY_DESCRIPTOR)malloc(len);
if (!InitializeSecurityDescriptor(security, SECURITY_DESCRIPTOR_REVISION))
retValue = 0;
}
// Get the sid for the username
if (retValue) {
char domainbuf[4096];
DWORD sidSize = 0;
DWORD bufSize = 4096;
SID_NAME_USE sidUse;
LookupAccountName(NULL, newuser, sidPtr, &sidSize, domainbuf, &bufSize, &sidUse);
sid = (PSID)malloc(sidSize);
if (!LookupAccountName(NULL, string, (PSID)sid, &sidSize, domainbuf, &bufSize, &sidUse))
retValue = 0;
}
}
// Set the sid to be the new owner
if (retValue && !SetSecurityDescriptorOwner(security, sidPtr, 0))
retValue = 0;
// Save the security descriptor
if (retValue)
retValue = SetFileSecurity(filename, OWNER_SECURITY_INFORMATION, security);
if (security) free(security);
if (sid) free(sid);
return retValue;
`
+3
聖地獄,所有這些來代替一個簡單的'chown'調用! – 2010-02-08 08:44:52
+0
爲了避免混淆,您是否忽略了函數返回類型,名稱和參數? – 2010-02-08 08:51:58
1
您可能會發現cacls or icacls commands有用...他們不完全直接使用,雖然
你能提供一個更位信息你想要做什麼?
相關問題
- 1. 在Node.js中更改文件所有者
- 2. 文件所有者無法在Linux中更改所有權
- 3. 如何在Amazon S3中更改多個文件的所有者?
- 4. 在java中更改目錄所有者
- 5. 更改存儲庫中所有文檔的所有者
- 6. redshift更改udf更改所有者
- 7. 更改所有者爲ReentrantLock
- 8. 更改活動的事件所有者
- 9. 更改在服務器上傳的文件的所有者
- 10. 如何更改服務器中文件的所有者/組?
- 11. 無法更改羣組所有者(羣組所有者意圖)
- 12. Linux - QNAP - 無法更改文件夾的所有者
- 13. Install4j不會更改文件的所有者?
- 14. Docker卷,更改文件權限/所有者
- 15. 更改目錄中所有內容的所有者
- 16. 在Linux中更改現有進程的所有者
- 17. sed初學者:改變文件夾中的所有事件
- 18. Linux用戶更改所有者/組
- 19. 已更改數據庫所有者
- 20. 更改表所有者w CockroachDB
- 21. 使用Ant在Windows上獲取文件所有者
- 22. 列出Windows中打開文件句柄的所有者進程?
- 23. 提取PTC項目中所有文件的所有更改包
- 24. 獲取文件所有者/作者
- 25. 文件所有者+第一響應者
- 26. 文件所有者:組不在位置/ proc/<pid>/setuid()後更改?
- 27. 在mercurial central repository中推送更改會更改所有者和組
- 28. 你如何在sql中更改數據庫的所有者?
- 29. 如何在ms sql server中更改架構所有者?
- 30. 更改Jenkins的文件所有權
Windows安全模型並不是真正以UNIX文件系統的文件所有權爲基礎的,所以這不是一個非常經常需要的工具。 – 2010-02-08 09:00:52