Papakis wrote: |
Το πρόβλημα βρίσκεται κατ' αρχάς όχι στην εκτελεση αυτού καθ' αυτού του .EXE αλλά στη κλήση εσωτερικά από το Exe διάφορων "Συστεμικών" properties (μια εξ' αυτων και η GetCommandLineArgs )
Για να γίνω πιο σαφής όταν το Exe πάει να καλέσει το Environment.GetCommandLineArgs τοτέ εμφανίζεται το παρακάτω
An unhandled exception of type 'System.Security.SecurityException' occurred in mscorlib.dll
Additional information: Request for the permission of type System.Security.Permissions.EnvironmentPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
|
|
Ναι, αυτή είναι η συμπεριφορά... Το assembly είναι partially trusted, δηλαδή κάποιες λειτουργίες επιτρέπονται και κάποιες άλλες απαγορεύονται, οπότε όταν πρόκειται να εκτελεστούν παράγουν security exceptions.
Πάντως, εγώ με το Microsoft .NET Framework 1.1 Wizards, και επιλέγοντας "Trust an assembly", μπορώ να τρέξω ένα απλό console application που διαβάζει τα command line args. Ουσιαστικά, το αποτέλεσμα του wizard είναι να πάει στο Runtime Security Policy και ανάλογα να θα επιλέξεις "Make changes to this computer" ή "Make changes for this user" θα φτιάξει ένα νέο code group με όνομα Wizard_x (x=0, 1, κλπ) με membership condition ένα Hash key που παράγει από τον κώδικα του assembly και Permition Set με τιμή "FullTrust". Προσοχή, αυτά όλα θα πρέπει να γίνονται σε κάθε client που πρόκειται να κάνει access το remote assembly καθώς το δικό του .NET Framework runtime θα αναλάβει να τρέξει τον κώδικα, οπότε θα πρέπει να γνωρίζει για το security.
Vir prudens non contra ventum mingit