Brilliant! Thanks Chris!

Is anybody here willing to convert this into REALbasic ?


At 9:06 AM -0400 22/3/07, Chris Little wrote:
>on 3/21/07 11:28 PM, Dr Gerard Hammond at [EMAIL PROTECTED] wrote:
>
>>  Hi,
>>
>>  Does anybody know how to change  a Win32 file's permissions via RB code.
>>  I need to modify a file so that the Security tab has the "Full
>>  Control" checkbox ticked for *ALL USERS*
>>
>>  using the shell I tried
>>
>>  attrib -r thefilepath
>>
>>  but that didn't work.
>>
>>  Logging in as an administrator and doing it via the Properties panel
>>  works but my users struggle with this level of detail.
>
>Gerard,
>
>Here is some C++ code that does close to what you need. It is a snippet from
>some code to give the Everyone group full access to a directory. It should
>be straight forward to convert to declares with the help of the docs on
>MSDN. You will still have to be logged in as a user with the rights to
>change file/directory permissions for the file in question.
>
>Chris
>
>ACCESS_MODE             aMode     = GRANT_ACCESS ;
>EXPLICIT_ACCESS         aAccess ;
>LPTSTR                  aPath     = inDir->path ;
>LPTSTR                  aTrustee = "Everyone" ;
>PACL                    aOldACL ;
>PACL                    aNewACL     = NULL ;
>PSECURITY_DESCRIPTOR    aPSD     = NULL ;
>DWORD                   aErr     = ERROR_SUCCESS;
>DWORD                   aMask     = ACTRL_FILE_WRITE | ACTRL_FILE_WRITE_PROP
>| ACTRL_FILE_WRITE_ATTRIB | ACTRL_FILE_READ | ACTRL_FILE_READ_PROP |
>ACTRL_FILE_READ_ATTRIB | ACTRL_FILE_APPEND | ACTRL_FILE_EXECUTE ;
>
>if (hAdvapi_DLL != NULL)
>{
>     aErr = GetNamedSecurityInfo( aPath, SE_FILE_OBJECT,
>DACL_SECURITY_INFORMATION, NULL, NULL, &aOldACL, NULL, &aPSD );
>
>     if ( aErr == ERROR_SUCCESS)
>     {
>         BuildExplicitAccessWithName( &aAccess, aTrustee, aMask, aMode,
>SUB_CONTAINERS_AND_OBJECTS_INHERIT ) ;
>        
>         aErr = SetEntriesInAcl( 1, &aAccess, aOldACL, &aNewACL ) ;
>
>         if ( aErr == ERROR_SUCCESS )
>         {
>             aErr = SetNamedSecurityInfo( aPath, SE_FILE_OBJECT,
>DACL_SECURITY_INFORMATION, NULL, NULL, aNewACL, NULL );
>         }
>
>         if ( aNewACL != NULL )
>         {
>             AccFree( aNewACL ) ;
>         }
>     }
>
>     if( aPSD != NULL)
>     {
>         AccFree( aPSD );
>     }
>    
>     aResult = ( aErr == ERROR_SUCCESS ) ;
>}
>
>
>_______________________________________________
>Unsubscribe or switch delivery mode:
><http://www.realsoftware.com/support/listmanager/>
>
>Search the archives:
><http://support.realsoftware.com/listarchives/lists.html>


-- 

Cheers,

Dr Gerard Hammond
MacSOS Solutions
_______________________________________________
Unsubscribe or switch delivery mode:
<http://www.realsoftware.com/support/listmanager/>

Search the archives:
<http://support.realsoftware.com/listarchives/lists.html>

Reply via email to