フォルダのファイル権限を作成する方法をプログラムで確認するにはどうすればよいですか? ファイルのアクセス権を変更しますか?ファイル許可を削除しますか?
GetNamedSecurityInfo
C:\Program Files
に書き込むことができますが、UACはAccess Denied (5)
と表示されます。アクセス許可を決定するにはどうすれば効果的ですか?変更をプログラムでチェックするにはどうすればよいですか?
マイコード:
function GetAccessRights(const FileName: String; ObjectType: SE_OBJECT_TYPE;
var Access: Cardinal): Cardinal;
var
SecDesc: PSECURITY_DESCRIPTOR;
pDacl: PACL;
Trusteee: TRUSTEE_;
begin
result := GetNamedSecurityInfo(PChar(FileName), ObjectType,
DACL_SECURITY_INFORMATION, nil, nil, @pDacl, nil, SecDesc);
if ERROR_SUCCESS = result then
begin
// the pDacl may be NULL if the object has unrestricted access
if pDacl <> nil then
begin
with Trusteee do
begin
pMultipleTrustee := nil;
MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE;
TrusteeForm := TRUSTEE_IS_NAME;
TrusteeType := TRUSTEE_IS_UNKNOWN;
ptstrName := 'CURRENT_USER';
end;
result := GetEffectiveRightsFromAcl(pDacl^, Trusteee, Access);
end
else
begin
Access := $FFFFFFFF;
result := ERROR_SUCCESS;
end;
if SecDesc <> nil then
LocalFree(Cardinal(SecDesc));
end;
end;
*許可を得るよりも許してもらうのが簡単です* –
'Program Files'では許してもらう必要はありません。仮想ストア内のWindows書き込みファイル。 – barbaris
何のため?あなたがその情報を表示したいGUIを持っているなら、権限があるかどうかを知る必要があります。選択肢はありません。あなたが実際に*何かを書く必要があるなら、何も打ち負かすことはありません:一時ファイルを作成し、それを削除してください。私は、サーバソフトウェアがSambaのときに、マップされたネットワークドライブに書き込みアクセス権があるかどうか、誰が確実に言うことができるのか、ヒントが本当に信頼できるものか疑問に思う。設定ファイルへの完全アクセスがあっても、それは難しいかもしれません! –