Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Κληση .ΝΕΤ Εκτελέσιμου από Απομακρυσμένο PC

Îåêßíçóå áðü ôï ìÝëïò Papakis. Τελευταία δημοσίευση από το μέλος KelMan στις 14-03-2006, 12:01. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-03-2006, 07:01 10615

    Κληση .ΝΕΤ Εκτελέσιμου από Απομακρυσμένο PC

    Καλημέρα Ας Υποθέσουμε οτι έχω ένα .Νet EXE στο PC A. Μέσα σ' αυτό έχω κάποιο κώδικα ο οποίος διαβάζει τις παραμέτρους με τις οποίες έχει κληθεί το αρχείο π.χ. MyExe par1 par2 ...par15. Όταν χρησιμοποιήσω την Environment.GetCommandLineArgs μου επιστρέφει σε έναν πίνακα το όνομα του αρχείου και τις 15 παραμέτρους μου. Οταν λοιπον εκτελώ το ΕΧΕ τοπικά (c:\temp\Myexe) τότε δεν υπαρχει κανένα πρόβλημα κατα την εκτέλεσή του. Όταν όμως το καλέσω απο κάποιο απομακρυσμένο PC (\\PC_A\temp\myexe) τότε παράγεται λάθος για Security Issues .
    Ποιά δικαιώματα πρέπει να ανατεθούν και σε ποιόν

    Ευχαριστώ
  •  14-03-2006, 07:33 10616 σε απάντηση της 10615

    Απ: Κληση .ΝΕΤ Εκτελέσιμου από Απομακρυσμένο PC

    Μέσα στα Administrative Tools υπάρχει το Microsoft .NET Framework 1.1 Configuration. Είναι μια κονσόλα μέσω της οποίας χειρίζεσαι το security των assemblies του .NET. Θα πρέπει λοιπόν να ρυθμίσεις το Runtime Security Policy γιατί από default θεωρεί τα assemblies που δεν βρίσκονται στον τοπικό υπολογιστή ως μη fully trusted. Εναλλακτικά μπορείς να χρησιμοποιήσεις τον wizard Trust an Assembly από το Microsoft .NET Framework Wizards.


    Vir prudens non contra ventum mingit
  •  14-03-2006, 10:35 10623 σε απάντηση της 10615

    Απ: Κληση .ΝΕΤ Εκτελέσιμου από Απομακρυσμένο PC

    Ευχαριστώ για την απάντηση



    Το πρόβλημα βρίσκεται κατ' αρχάς όχι στην εκτελεση αυτού καθ' αυτού του .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.



    Προσπάθησα να εισάγω και το System.Security στα Policy Assemblies χωρίς επιτυχια με μήνυμα λάθους "Unable to addt the selected assembly. The assembly must have a strong name (name,version and public key)



    Απο τους .Wizards έδωσα Full Trust στο εν λόγω EXE καθώς και Full Trust στο Local Internet χωρίς επιτυχία



    Ευχαριστώ
  •  14-03-2006, 12:01 10629 σε απάντηση της 10623

    Απ: Κληση .ΝΕΤ Εκτελέσιμου από Απομακρυσμένο PC

     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
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems