J'y arrive pas... [Résolu]

babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 22 juil. 2007 à 09:14 - Dernière réponse : babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention
- 24 juil. 2007 à 03:18
Bonjour,

Il n'y a que des exemples en c# en ce qui concerne les perm et quasiment rien en c++. Alors moi qui débute, je ne vous explique pas comment je galère...

Voilà j'essaie "tout simplement" de passer dans une variable le compte tout le monde comme ceci :

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, String^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
   
    SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, null);

    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

mais ça ne marche pas...même en retirant null (que j'ai laissé pour bien faire comprendre mon niveau :))
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 23 juil. 2007 à 20:18
3
Merci
salut,

maintenant ca devrait marcher (c'était mon premier bout de code C++/CLI) :
#include "stdafx.h"
#include <vcclr.h>

using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, SecurityIdentifier^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, nullptr);

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

ShareVB

Merci ShareVB 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de ShareVB
ShareVB 2717 Messages postés vendredi 28 juin 2002Date d'inscription 13 janvier 2016 Dernière intervention - 22 juil. 2007 à 22:11
0
Merci
salut,

peut être :
using namespace System;
using namespace System::IO;
using namespace System::Security::AccessControl;
using namespace System::Security::Principal;

void AddFileSecurity(String^ fileName, SecurityIdentifier^ account,
                        FileSystemRights rights, AccessControlType controlType)
{
    FileSecurity^ fSecurity = File::GetAccessControl(fileName);

    fSecurity->AddAccessRule(gcnew FileSystemAccessRule
                                   (account,rights, controlType));

    File::SetAccessControl(fileName, fSecurity);
}

int main()
{
    try
    {
        String^ fileName = "test.txt";

        SecurityIdentifier^ tous = gcnew SecurityIdentifier(WellKnownSidType::WorldSid, null);

        AddFileSecurity(fileName, tous,
            FileSystemRights::ExecuteFile, AccessControlType::Allow);

    }
    catch (Exception^ ex)
    {
        Console::WriteLine(ex->Message);
    }
}

Je n'ai jamais compris l'intérêt de faire du C++/CLI par rapport à C# qui est nettement plus simple...

ShareVB
Commenter la réponse de ShareVB
babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 23 juil. 2007 à 00:01
0
Merci
Salut ShareVB,

ça passe de 2 à 34 erreurs comme ceci

Allez hop, migration vers du C#...en plus je ne connais pas Orcas, une bonne occase pour découvrir :).
Commenter la réponse de babaslow
babaslow 66 Messages postés lundi 22 mai 2006Date d'inscription 25 août 2009 Dernière intervention - 24 juil. 2007 à 03:18
0
Merci
Quand je disais que j'étais null...j'étais pas si loin  lol

Sinon en compilant en /clr, tu peux éviter d'inclure stdafx.h vcclr.h ;)

Merci.
Commenter la réponse de babaslow

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.