我需要更改文件的所有权或撤销使用 Powerbuilder 创建文件的用户的所有权。即在我的应用程序中,用户创建了一个文件,我想立即在代码中从文件中删除他的所有权。这样用户就无法编辑或修改文件。我找到了一些相同的 c++ 示例(在 Windows 中更改文件所有者),但无法在 Powerbuilder 中复制它。调用 SetNamedSecurityInfoW 时使用以下代码获取错误代码 87。如果有人可以帮助我使用 Powerbuilder 实现所有权变更。
CONSTANT Integer SE_FILE_OBJECT = 1
CONSTANT Integer OWNER_SECURITY_INFORMATION = 1
CONSTANT Integer NAME_SIZE = 64
CONSTANT Integer SID_SIZE = 32
String domain_name
Integer ret, sid_len, domain_len
integer li_ret, newowner
n_filesys nvo
Integer l_nothing
SetNull(l_nothing)
newowner = 100
li_ret = nvo.SetNamedSecurityInfoW('P:\My Documents\Test.txt',SE_FILE_OBJECT,OWNER_SECURITY_INFORMATION,newowner,l_nothing,l_nothing,l_nothing)
If li_ret <> 0 Then
messagebox("Hi","Error")
end if
---------------------------------------------------------------------
Declaration of SetNamedSecurityInfoW:---
Function Integer SetNamedSecurityInfo ( &
String ObjectName, &
Integer ObjectType, &
Integer SecurityInfo, &
Long sidOwner, &
Long sidGroup, &
Long Dacl, &
Long Sacl &
) Library "advapi32.dll"