2010-11-01 3 views
1

Mon application doit écrire (et déplacer) des fichiers dans un dossier d'un utilisateur non-administrateur, et cet utilisateur n'a pas l'autorisation d'utiliser ce dossier.Modification des autorisations RealBASIC sur un non-administrateur Mac

J'ai essayé de modifier les autorisations du dossier, mais cela ne semble pas avoir d'effet.

Y a-t-il des restrictions intégrées qui me permettent de faire cela?

Ce que je fais est d'écrire aux documents et ensuite tenter de déplacer le fichier dans le dossier final, qui échoue ...

Merci pour toutes les réponses!

Voici le code:

Dim t as TextOutputStream 
    Dim tempfile as FolderItem = SpecialFolder.Documents.Child(filePath.Name) 

    t = tempfile.CreateTextFile 
    t.Write fileData 
    t.close 

    Dim p as New Permissions(0) 

    p.OthersExecute = True 
    p.OthersWrite = True 
    p.OthersRead = True 

    filePath.Parent.Permissions = p 

    tempfile.MoveFileTo filePath.Parent 

Répondre

2

Le système d'exploitation est conçu pour arrêter ce genre de chose car il est un trou de sécurité énorme sinon

+0

OK, C'est ce que je m'étais dis. Le client m'embête pendant des mois avec ça et j'avais besoin de le savoir à coup sûr. –

2

Vous pouvez utiliser l'une des fonctions dans le plug-in logiciel Monkeybread, AuthorizationMBS, pour autoriser l'autorisation, en supposant que l'utilisateur peut élever le niveau de sécurité. Dans une classe de mine qui doit entrer dans un emplacement du système, j'ai ceci:

Protected Function mbsAuthorize() As boolean 
    dim a as AuthorizationMBS 
    dim s(2) as String 

    if mbsAuthorized then 
    mbsForm = mbsAuth.ExternalForm 
    Return true 
    else 
    a = New AuthorizationMBS 
    If a.NewAuthorization(nil, a.kAuthorizationFlagPreAuthorize) Then 
     a.SimpleAuthorize 

     if a.Authorized then 
     mbsAuth=a // save so the externalform doesn't get invalid 
     mbsForm=a.ExternalForm // copy to string for later use. 
     Return true 
     end if 
    else 
     break 
    End if 
    end 

    return false 
End Function 

La classe a ces propriétés:

mbsForm comme chaîne

mbsAuth comme

AuthorizationMBS
+0

BKeeney - merci! Je vais devoir voir où le client veut aller avec ça ... –

Questions connexes