PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
21737 05/02/01 16:07:16 RE(4):PB9.0:フォルダのアクセス権限取得方法について By AzureRX-7
21717 05/01/24 20:19:54 RE(3):PB9.0:フォルダのアクセス権限取得方法について By Chicchi
21715 05/01/24 16:05:05 RE(2):PB9.0:フォルダのアクセス権限取得方法について By AzureRX-7
21714 05/01/24 14:50:27 RE(1):PB9.0:フォルダのアクセス権限取得方法について By Chicchi
21713 05/01/24 11:32:00 PB9.0:フォルダのアクセス権限取得方法について By AzureRX-7

カテゴリ:スクリプトの記述
日付:2005年02月01日 16:07 発信者:AzureRX-7
題名:RE(4):PB9.0:フォルダのアクセス権限取得方法について

Chicchiさん、こんにちは。

>使ったことがないので無責任な発言ですが、GetFileSecurity (Win32API) が該当するのではないでしょう
か。

Chicchiさん、ありがとうございます。
教えていただいた関数で色々試していてお礼が遅くなりました。
ただ、セキュリティ記述子は取得できたと思われるのですが、
[GetSecurityDescriptorOwner]を使用して所有者IDを取得すると
エラーコード=1305(ERROR_UNKNOWN_REVISION)が返却されIDの取得が出来ません。

以下に記述したスクリプトを載せますが、どこが間違っているのでしょうか?

○API定義
 function long GetFileSecurity(string lpFileName, long RequestedInformation, 
  ref long pSecurityDescriptor, long nLength, ref long lpnLengthNeeded) 
   LIBRARY \"advapi32.dll\" alias for \"GetFileSecurityA\"
 function long GetSecurityDescriptorOwner(long pSecurityDescriptor, ref long pOwner, 
  ref long lpbOwnerDefaulted) library \"advapi32.dll\" 

○constant定義
constant long OWNER_SECURITY_INFORMATION = 1

○スクリプト
long lpsd
long lngSdLength
long lpsid
long lowndef

//必要なSD(セキュリティ記述子)サイズ取得
setnull(lpsd)
If GetFileSecurity(sDir, OWNER_SECURITY_INFORMATION, lpsd, 0, lngSdLength) = 0 Then
 If GetLastError() <>  ERROR_INSUFFICIENT_BUFFER Then
  return -1
 End If
End If

//必要なSD(セキュリティ記述子)サイズ確保
lpsd = GlobalAlloc(GMEM_FIXED, lngSdLength)

//必要なSD(セキュリティ記述子)取得
If GetFileSecurity(sDir, OWNER_SECURITY_INFORMATION, lpsd, lngSdLength, lngSdLength) = 0 Then
 return -1
end if

//所有者SIDの取得
if GetSecurityDescriptorOwner(lpsd, lpsid, lowndef) = 0 then
 return -1
end if



付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.