Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

WebASP

Permissão de Escrita via ASP

Recommended Posts

E ai galeraEu precisava de um code que de permissão de escrita na pasta via asp ou seja sabe quando da o seguinte erro em um updateUpdate Query Permission ou algo assim ?Então e porque a pasta que esta o banco de dados não tem permissão de escrita eu gostaria de saber se tem como da esta permissão em tempo de execução do scritps, codigo muito utilizado em painel de hospedagem que o cliente entra e da as permissões necessárias na pastaAbraços e valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara onde eu trabalhava eu mexia com isso em PHP. este script é muito bom mesmo! se eu conseguir alguma coisa eu posto ai!Falo!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se estou totalmente certo mas acho que ASP.Net tem como dar as permissões.Vi isso uma vez em um provedor.Até.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim e possivel mais deve usar algum tipod e Dll ou criar uma pois s enao tivesse nao existiria paineis que utilizam uhahuahua e ele regulam o code hauuhahua

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vualá colegas....Como sempre as API's ajudando-nos.Encontrei um exemplo no Google.Isso ó vai funcionar no VB, depois tem que adaptar, criar uma DLL e utilizar nas páginas ASP.

'Example from MSDN (Q240176)'The following code changes permissions on a folder to Add & Read or Change.'The folder needs to be created on an NTFS partition.'You need to be an Administrator on the machine in question and have read/write'(READ_CONTROL and WRITE_DAC) access to the file or directory.'1. Create a Standard EXE project in Visual Basic. Form1 is created by default.'2. Add two Textboxes (Text1 and Text2) and two CommandButtons (Command1 and Command2) to Form1.'3. Add the following code to the form and the module'4. Run the application.'5. In the Test1 TextBox, enter the name of the folder you want to change permissions on. (D:\test is entered by default.)'    In the Test2 Textbox, enter the name of the user you want to give these permissions to.'6. Click the Add & Read permissions button to give Add & Read permissions to the folder, or click the Change Permissions'    button to give Change permissions to the folder.'7. To check the permissions on the folder, right-click Explorer. Select the Properties menu item, and click the Security'    Tab of the Properties dialog box. On the Security tab, click the Permissions button. The specific account should say'    Add & Read or Change depending on which button you clicked in the preceding sample.'Add this code to the formPrivate Sub Command1_Click()    Dim sUserName As String    Dim sFolderName As String    sUserName = Trim$(CStr(Text2.Text))    sFolderName = Trim$(CStr(Text1.Text))    SetAccess sUserName, sFolderName, GENERIC_READ Or GENERIC_EXECUTE Or DELETE Or GENERIC_WRITEEnd SubPrivate Sub Command2_Click()    Dim sUserName As String    Dim sFolderName As String    sUserName = Trim$(Text2.Text)    sFolderName = Trim$(Text1.Text)    SetAccess sUserName, sFolderName, GENERIC_EXECUTE Or GENERIC_READEnd SubPrivate Sub Form_Load()    Text1.Text = "enter folder name"    Text2.Text = "enter username"    Command1.Caption = "Change"    Command2.Caption = "Read && Add"End Sub'Add this code to a module' Constants used within our API calls. Refer to the MSDN for more' information on how/what these constants are used for.' Memory constants used through various memory API calls.Public Const GMEM_MOVEABLE = &H2Public Const LMEM_FIXED = &H0Public Const LMEM_ZEROINIT = &H40Public Const LPTR = (LMEM_FIXED + LMEM_ZEROINIT)Public Const GENERIC_READ = &H80000000Public Const GENERIC_ALL = &H10000000Public Const GENERIC_EXECUTE = &H20000000Public Const GENERIC_WRITE = &H40000000' The file/security API call constants.' Refer to the MSDN for more information on how/what these constants' are used for.Public Const DACL_SECURITY_INFORMATION = &H4Public Const SECURITY_DESCRIPTOR_REVISION = 1Public Const SECURITY_DESCRIPTOR_MIN_LENGTH = 20Public Const SD_SIZE = (65536 + SECURITY_DESCRIPTOR_MIN_LENGTH)Public Const ACL_REVISION2 = 2Public Const ACL_REVISION = 2Public Const MAXDWORD = &HFFFFFFFFPublic Const SidTypeUser = 1Public Const AclSizeInformation = 2'  The following are the inherit flags that go into the AceFlags field'  of an Ace header.Public Const OBJECT_INHERIT_ACE = &H1Public Const CONTAINER_INHERIT_ACE = &H2Public Const NO_PROPAGATE_INHERIT_ACE = &H4Public Const INHERIT_ONLY_ACE = &H8Public Const INHERITED_ACE = &H10Public Const VALID_INHERIT_FLAGS = &H1FPublic Const DELETE = &H10000' Structures used by our API calls.' Refer to the MSDN for more information on how/what these' structures are used for.Type ACE_HEADER  AceType As Byte  AceFlags As Byte  AceSize As IntegerEnd TypePublic Type ACCESS_DENIED_ACE  Header As ACE_HEADER  Mask As Long  SidStart As LongEnd TypeType ACCESS_ALLOWED_ACE  Header As ACE_HEADER  Mask As Long  SidStart As LongEnd TypeType ACL  AclRevision As Byte  Sbz1 As Byte  AclSize As Integer  AceCount As Integer  Sbz2 As IntegerEnd TypeType ACL_SIZE_INFORMATION  AceCount As Long  AclBytesInUse As Long  AclBytesFree As LongEnd TypeType SECURITY_DESCRIPTOR  Revision As Byte  Sbz1 As Byte  Control As Long  Owner As Long  Group As Long  sACL As ACL  Dacl As ACLEnd Type' API calls used within this sample. Refer to the MSDN for more' information on how/what these APIs do.Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As LongDeclare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As LongDeclare Function LookupAccountName Lib "advapi32.dll" Alias "LookupAccountNameA" (lpSystemName As String, ByVal lpAccountName As String, sid As Any, cbSid As Long, ByVal ReferencedDomainName As String, cbReferencedDomainName As Long, peUse As Long) As LongDeclare Function InitializeSecurityDescriptor Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, ByVal dwRevision As Long) As LongDeclare Function GetSecurityDescriptorDacl Lib "advapi32.dll" (pSecurityDescriptor As Byte, lpbDaclPresent As Long, pDacl As Long, lpbDaclDefaulted As Long) As LongDeclare Function GetFileSecurityN Lib "advapi32.dll" Alias "GetFileSecurityA" (ByVal lpFileName As String, ByVal RequestedInformation As Long, ByVal pSecurityDescriptor As Long, ByVal nLength As Long, lpnLengthNeeded As Long) As LongDeclare Function GetFileSecurity Lib "advapi32.dll" Alias "GetFileSecurityA" (ByVal lpFileName As String, ByVal RequestedInformation As Long, pSecurityDescriptor As Byte, ByVal nLength As Long, lpnLengthNeeded As Long) As LongDeclare Function GetAclInformation Lib "advapi32.dll" (ByVal pAcl As Long, pAclInformation As Any, ByVal nAclInformationLength As Long, ByVal dwAclInformationClass As Long) As LongPublic Declare Function EqualSid Lib "advapi32.dll" (pSid1 As Byte, ByVal pSid2 As Long) As LongDeclare Function GetLengthSid Lib "advapi32.dll" (pSid As Any) As LongDeclare Function InitializeAcl Lib "advapi32.dll" (pAcl As Byte, ByVal nAclLength As Long, ByVal dwAclRevision As Long) As LongDeclare Function GetAce Lib "advapi32.dll" (ByVal pAcl As Long, ByVal dwAceIndex As Long, pace As Any) As LongDeclare Function AddAce Lib "advapi32.dll" (ByVal pAcl As Long, ByVal dwAceRevision As Long, ByVal dwStartingAceIndex As Long, ByVal pAceList As Long, ByVal nAceListLength As Long) As LongDeclare Function AddAccessAllowedAce Lib "advapi32.dll" (pAcl As Byte, ByVal dwAceRevision As Long, ByVal AccessMask As Long, pSid As Byte) As LongPublic Declare Function AddAccessDeniedAce Lib "advapi32.dll" (pAcl As Byte, ByVal dwAceRevision As Long, ByVal AccessMask As Long, pSid As Byte) As LongDeclare Function SetSecurityDescriptorDacl Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, ByVal bDaclPresent As Long, pDacl As Byte, ByVal bDaclDefaulted As Long) As LongDeclare Function SetFileSecurity Lib "advapi32.dll" Alias "SetFileSecurityA" (ByVal lpFileName As String, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) As LongDeclare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)Public Sub SetAccess(sUserName As String, sFileName As String, lMask As Long)  Dim lResult As Long            ' Result of various API calls.  Dim I As Integer              ' Used in looping.  Dim bUserSid(255) As Byte      ' This will contain your SID.  Dim bTempSid(255) As Byte      ' This will contain the Sid of each ACE in the ACL .  Dim sSystemName As String      ' Name of this computer system.  Dim lSystemNameLength As Long  ' Length of string that contains                                  ' the name of this system.  Dim lLengthUserName As Long    ' Max length of user name.  'Dim sUserName As String * 255  ' String to hold the current user                                  ' name.  Dim lUserSID As Long          ' Used to hold the SID of the                                  ' current user.  Dim lTempSid As Long            ' Used to hold the SID of each ACE in the ACL  Dim lUserSIDSize As Long          ' Size of the SID.  Dim sDomainName As String * 255  ' Domain the user belongs to.  Dim lDomainNameLength As Long    ' Length of domain name needed.  Dim lSIDType As Long              ' The type of SID info we are                                    ' getting back.  Dim sFileSD As SECURITY_DESCRIPTOR  ' SD of the file we want.  Dim bSDBuf() As Byte          ' Buffer that holds the security                                  ' descriptor for this file.  Dim lFileSDSize As Long          ' Size of the File SD.  Dim lSizeNeeded As Long          ' Size needed for SD for file.  Dim sNewSD As SECURITY_DESCRIPTOR ' New security descriptor.  Dim sACL As ACL                  ' Used in grabbing the DACL from                                    ' the File SD.  Dim lDaclPresent As Long          ' Used in grabbing the DACL from                                    ' the File SD.  Dim lDaclDefaulted As Long        ' Used in grabbing the DACL from                                    ' the File SD.  Dim sACLInfo As ACL_SIZE_INFORMATION  ' Used in grabbing the ACL                                        ' from the File SD.  Dim lACLSize As Long          ' Size of the ACL structure used                                  ' to get the ACL from the File SD.  Dim pAcl As Long              ' Current ACL for this file.  Dim lNewACLSize As Long        ' Size of new ACL to create.  Dim bNewACL() As Byte          ' Buffer to hold new ACL.  Dim sCurrentACE As ACCESS_ALLOWED_ACE    ' Current ACE.  Dim pCurrentAce As Long                  ' Our current ACE.  Dim nRecordNumber As Long  ' Get the SID of the user. (Refer to the MSDN for more information on SIDs  ' and their function/purpose in the operating system.) Get the SID of this  ' user by using the LookupAccountName API. In order to use the SID  ' of the current user account, call the LookupAccountName API  ' twice. The first time is to get the required sizes of the SID  ' and the DomainName string. The second call is to actually get  ' the desired information.  lResult = LookupAccountName(vbNullString, sUserName, _      bUserSid(0), 255, sDomainName, lDomainNameLength, _      lSIDType)  ' Now set the sDomainName string buffer to its proper size before  ' calling the API again.  sDomainName = Space(lDomainNameLength)  ' Call the LookupAccountName again to get the actual SID for user.  lResult = LookupAccountName(vbNullString, sUserName, _      bUserSid(0), 255, sDomainName, lDomainNameLength, _      lSIDType)  ' Return value of zero means the call to LookupAccountName failed;  ' test for this before you continue.    If (lResult = 0) Then        MsgBox "Error: Unable to Lookup the Current User Account: " _          & sUserName        Exit Sub    End If  ' You now have the SID for the user who is logged on.  ' The SID is of interest since it will get the security descriptor  ' for the file that the user is interested in.  ' The GetFileSecurity API will retrieve the Security Descriptor  ' for the file. However, you must call this API twice: once to get  ' the proper size for the Security Descriptor and once to get the  ' actual Security Descriptor information.  lResult = GetFileSecurityN(sFileName, DACL_SECURITY_INFORMATION, _      0, 0, lSizeNeeded)  ' Redimension the Security Descriptor buffer to the proper size.  ReDim bSDBuf(lSizeNeeded)  ' Now get the actual Security Descriptor for the file.  lResult = GetFileSecurity(sFileName, DACL_SECURITY_INFORMATION, _      bSDBuf(0), lSizeNeeded, lSizeNeeded)  ' A return code of zero means the call failed; test for this  ' before continuing.  If (lResult = 0) Then      MsgBox "Error: Unable to Get the File Security Descriptor"      Exit Sub  End If  ' Call InitializeSecurityDescriptor to build a new SD for the  ' file.  lResult = InitializeSecurityDescriptor(sNewSD, _      SECURITY_DESCRIPTOR_REVISION)  ' A return code of zero means the call failed; test for this  ' before continuing.  If (lResult = 0) Then      MsgBox "Error: Unable to Initialize New Security Descriptor"      Exit Sub  End If  ' You now have the file's SD and a new Security Descriptor  ' that will replace the current one. Next, pull the DACL from  ' the SD. To do so, call the GetSecurityDescriptorDacl API  ' function.  lResult = GetSecurityDescriptorDacl(bSDBuf(0), lDaclPresent, _      pAcl, lDaclDefaulted)  ' A return code of zero means the call failed; test for this  ' before continuing.  If (lResult = 0) Then      MsgBox "Error: Unable to Get DACL from File Security " _        & "Descriptor"      Exit Sub  End If  ' You have the file's SD, and want to now pull the ACL from the  ' SD. To do so, call the GetACLInformation API function.  ' See if ACL exists for this file before getting the ACL  ' information.  If (lDaclPresent = False) Then      MsgBox "Error: No ACL Information Available for this File"      Exit Sub  End If  ' Attempt to get the ACL from the file's Security Descriptor.  lResult = GetAclInformation(pAcl, sACLInfo, Len(sACLInfo), 2&)  ' A return code of zero means the call failed; test for this  ' before continuing.  If (lResult = 0) Then      MsgBox "Error: Unable to Get ACL from File Security Descriptor"      Exit Sub  End If  ' Now that you have the ACL information, compute the new ACL size  ' requirements.  lNewACLSize = sACLInfo.AclBytesInUse + (Len(sCurrentACE) + _      GetLengthSid(bUserSid(0))) * 2 - 4  ' Resize our new ACL buffer to its proper size.  ReDim bNewACL(lNewACLSize)  ' Use the InitializeAcl API function call to initialize the new  ' ACL.  lResult = InitializeAcl(bNewACL(0), lNewACLSize, ACL_REVISION)  ' A return code of zero means the call failed; test for this  ' before continuing.  If (lResult = 0) Then      MsgBox "Error: Unable to Initialize New ACL"      Exit Sub  End If  ' If a DACL is present, copy it to a new DACL.  If (lDaclPresent) Then      ' Copy the ACEs from the file to the new ACL.      If (sACLInfo.AceCount > 0) Then        ' Grab each ACE and stuff them into the new ACL.        nRecordNumber = 0        For I = 0 To (sACLInfo.AceCount - 1)            ' Attempt to grab the next ACE.            lResult = GetAce(pAcl, I, pCurrentAce)            ' Make sure you have the current ACE under question.            If (lResult = 0) Then              MsgBox "Error: Unable to Obtain ACE (" & I & ")"              Exit Sub            End If            ' You have a pointer to the ACE. Place it            ' into a structure, so you can get at its size.            CopyMemory sCurrentACE, pCurrentAce, LenB(sCurrentACE)            'Skip adding the ACE to the ACL if this is same usersid            lTempSid = pCurrentAce + 8            If EqualSid(bUserSid(0), lTempSid) = 0 Then                ' Now that you have the ACE, add it to the new ACL.                lResult = AddAce(VarPtr(bNewACL(0)), ACL_REVISION, _                  MAXDWORD, pCurrentAce, _                  sCurrentACE.Header.AceSize)                ' Make sure you have the current ACE under question.                If (lResult = 0) Then                  MsgBox "Error: Unable to Add ACE to New ACL"                    Exit Sub                End If                nRecordNumber = nRecordNumber + 1            End If        Next I        ' You have now rebuilt a new ACL and want to add it to        ' the newly created DACL.        lResult = AddAccessAllowedAce(bNewACL(0), ACL_REVISION, _            lMask, bUserSid(0))        ' Make sure added the ACL to the DACL.        If (lResult = 0) Then            MsgBox "Error: Unable to Add ACL to DACL"            Exit Sub        End If        'If it's directory, we need to add inheritance staff.        If GetAttr(sFileName) And vbDirectory Then            ' Attempt to grab the next ACE which is what we just added.            lResult = GetAce(VarPtr(bNewACL(0)), nRecordNumber, pCurrentAce)            ' Make sure you have the current ACE under question.            If (lResult = 0) Then              MsgBox "Error: Unable to Obtain ACE (" & I & ")"              Exit Sub            End If            ' You have a pointer to the ACE. Place it            ' into a structure, so you can get at its size.            CopyMemory sCurrentACE, pCurrentAce, LenB(sCurrentACE)            sCurrentACE.Header.AceFlags = OBJECT_INHERIT_ACE + INHERIT_ONLY_ACE            CopyMemory ByVal pCurrentAce, VarPtr(sCurrentACE), LenB(sCurrentACE)            'add another ACE for files            lResult = AddAccessAllowedAce(bNewACL(0), ACL_REVISION, _              lMask, bUserSid(0))            ' Make sure added the ACL to the DACL.            If (lResult = 0) Then              MsgBox "Error: Unable to Add ACL to DACL"              Exit Sub            End If            ' Attempt to grab the next ACE.            lResult = GetAce(VarPtr(bNewACL(0)), nRecordNumber + 1, pCurrentAce)            ' Make sure you have the current ACE under question.            If (lResult = 0) Then              MsgBox "Error: Unable to Obtain ACE (" & I & ")"              Exit Sub            End If            CopyMemory sCurrentACE, pCurrentAce, LenB(sCurrentACE)            sCurrentACE.Header.AceFlags = CONTAINER_INHERIT_ACE            CopyMemory ByVal pCurrentAce, VarPtr(sCurrentACE), LenB(sCurrentACE)        End If        ' Set the file's Security Descriptor to the new DACL.        lResult = SetSecurityDescriptorDacl(sNewSD, 1, _            bNewACL(0), 0)        ' Make sure you set the SD to the new DACL.        If (lResult = 0) Then            MsgBox "Error: " & _                "Unable to Set New DACL to Security Descriptor"            Exit Sub        End If        ' The final step is to add the Security Descriptor back to        ' the file!        lResult = SetFileSecurity(sFileName, _            DACL_SECURITY_INFORMATION, sNewSD)        ' Make sure you added the Security Descriptor to the file!        If (lResult = 0) Then            MsgBox "Error: Unable to Set New Security Descriptor " _              & " to File : " & sFileName            MsgBox Err.LastDllError        Else            MsgBox "Updated Security Descriptor on File: " _              & sFileName        End If      End If  End IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caracaaaaaaaaaaaa eu não teria a paciência do Brother acima....heheheBom mais pelo que eu intendi e pelo que sei..na Locaweb você vai em Aplicações ASP.NEt dai lá você dá as permissões de escrita e leitura...Bom espero ter ajudado...sou novo na área de Web mais aos poucos vou aprendendo..hjeehheAbraços...Amaro Bratfisch

Compartilhar este post


Link para o post
Compartilhar em outros sites

huhauhaua boa...seguinte alguém tem um exemplo de Newsletter que funcione?queria poder enviar pra todos os usuários...cadastrados no meu BD e dai conforme fosse dando erro...( por não existir o email aou algo assim.) msm assim ela dava continuidade aos outros e-mails..dom 1º até o de nº 1000 por ex.?alguém tem?ou posso postar o meu aqui q ta danu erro ta voltando um monte erro...e dai q vem minha dúvida eu não sei se ele chegou enviar pra todos do inicio ao fim....ou se ele.parou de enviar a partir do momento que deu o primeiro erro....Abraços Amaro Bratfisch

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.