Erişim Engellendi hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

Erişim Engellendi hatası

Mesaj gönderen kaank »

Merhabalar,

SQL Server 2005 C:\program files\...\Data\ klasörünün altındaki bir dosyayı attach edecekken erişim engellendi hatası alıyorum sonra girip msdosdan Cacls komutu ile o dosyaya tam denetim izni veriyorum şimdi sorum şu bunu müşteri yapamaz ben nasıl delphiden yetkisini ayarlarım şöyle bir fonksiyon var

Kod: Tümünü seç

function SetFileAccessRights(AFile, AUser: String; AMask: DWORD): Boolean;
var
  psd             : PSECURITY_DESCRIPTOR;
  dwSize, dwError : DWord;
  bDaclPresent    : Bool;
  bDaclDefaulted  : Bool;
  OldAcl          : PACL;
  NewAcl          : PACL;
  sd              : SECURITY_DESCRIPTOR;
  ea              : EXPLICIT_ACCESS;
begin
  Result := False;
  if WIN32Platform <> VER_PLATFORM_WIN32_NT then Exit;
  psd := nil;
  NewAcl := nil;
  bDaclDefaulted := True;
  if not GetFileSecurity(PChar(AFile), DACL_SECURITY_INFORMATION, Pointer(1),
           0, dwSize) and (GetLastError = ERROR_INSUFFICIENT_BUFFER)
  then 
  try
    psd := HeapAlloc(GetProcessHeap, 8, dwSize);
    if psd <> nil then 
    begin
      BuildExplicitAccessWithName(@ea, PChar(AUser), AMask,
        SET_ACCESS, SUB_CONTAINERS_AND_OBJECTS_INHERIT{NO_INHERITANCE});
      Result := GetFileSecurity(PChar(AFile), DACL_SECURITY_INFORMATION, psd, dwSize, dwSize) and
        GetSecurityDescriptorDacl(psd, bDaclPresent, OldAcl, bDaclDefaulted) and
        (SetEntriesInAcl(1, @ea, OldAcl, NewAcl) = ERROR_SUCCESS) and
        InitializeSecurityDescriptor(@sd, SECURITY_DESCRIPTOR_REVISION) and
        SetSecurityDescriptorDacl(@sd, True, NewAcl, False) and
        SetFileSecurity(PChar(AFile), DACL_SECURITY_INFORMATION, @sd);
    end;
  finally  
    if NewAcl <> nil then LocalFree(HLocal(NewAcl));
    if psd <> nil then HeapFree(GetProcessHeap, 0, psd);
  end;
end;
fakat derleyemedim yardımcı olursanız çok sevınırım
simdiden tesekkurler
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

setfileattr diye bir fonksiyonda vardı.eger kastettiğin dosya özniteliği ise
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
kaank
Üye
Mesajlar: 31
Kayıt: 01 Oca 2008 10:58

Mesaj gönderen kaank »

öznitelikten çok erişim yetkisi vermekti durumu şöyle kurtardım Program files'a bulaşmayarak bu program filesa özel birşey sanırım bilmiyorum ama c ye açınca sorunsuz attach edebildim sıkıntı çeken arkadaşlar varsa SetFileAccess fonksiyonunu kullansınlar yalnız orada oturum adı yazmanız gerekecek kimin hangi oturumu açtıgını registryden bulmanız gerek yardımcı olurum sorun yaşayanlara teşekkürler
kolaygelsin
Cevapla