Επισκέπτης Δημοσ. 4 Ιουνίου 2014 Δημοσ. 4 Ιουνίου 2014 γινετε αφου ηδη τρεχει το προγραμμα κανονικα να ανοιξω αλλο form σαν administrator? αν ναι πως?
georgemarios Δημοσ. 4 Ιουνίου 2014 Δημοσ. 4 Ιουνίου 2014 Εννοεις μια εφαρμογη με δικαιωματα 'user' να δωσει στον εαυτο της δικαιωματα 'admin'? Χμ..... ΥΓ. Ελπιζω να ΜΗ γινεται
isim Δημοσ. 4 Ιουνίου 2014 Δημοσ. 4 Ιουνίου 2014 Γινεται, στην καινουργεια φορμα που ανοιγεις πρεπει να κανεις impersonate τον χρηστη που θες προγραμματιστικα. Sample Κωδικα θα βρεις πολυ ευκολα στο net
defacer Δημοσ. 4 Ιουνίου 2014 Δημοσ. 4 Ιουνίου 2014 Αν εννοείς να πάρεις administrator privileges (aka elevation, η διαδικασία κατά την οποία τυπικά εμφανίζεται το dialog του UAC που σε ρωτάει αν θέλεις να δώσεις δικαιώματα στο πρόγραμμα να κάνει ό,τι θέλει) αφότου έχει ξεκινήσει η εκτέλεση της εφαρμογής σου, τότε δε μπορείς. Αυτό γίνεται μόνο κατά την εκκίνηση της εφαρμογής εφόσον έχεις συμπεριλάβει το κατάλληλο manifest (google "requireAdministrator"). @isim το impersonation είναι τελείως διαφορετικό. Καταρχήν δε μπορείς να κάνεις impersonate σε οποιοδήποτε API, μόνο σε όσα το υποστηρίζουν. Αλλά πιο σημαντικά, το να παριστάνεις έναν άλλο χρήστη του οποίου η εφαρμογή εξακολουθεί να μην είναι elevated... δε σε κάνει elevated.
isim Δημοσ. 4 Ιουνίου 2014 Δημοσ. 4 Ιουνίου 2014 @defacer Το ξερω οτι το impersonation ειναι διαφορετικο για αυτο και αναφερα οτι θα χρησιμοποιησει credentials αλλου χρηστη. γινετε αφου ηδη τρεχει το προγραμμα κανονικα να ανοιξω αλλο form σαν administrator? αν ναι πως? Το απο πανω μου θυμισε μια περιπτωση οπου θελαμε οι χρηστες να εχουν προσβαση read/write σε ενα directory μονο μεσω εφαρμογης. Kαι υλοποιηθηκε με user impersonation με τις ευλογιες του Audit.
vacilis Δημοσ. 8 Ιουνίου 2014 Δημοσ. 8 Ιουνίου 2014 Project -> Add New Item, επίλεξε το "Application Manifest File" και έπειτα άλλαξε το <requestedExecutionLevel>σε αυτό: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> Αυτό θα ζητάει δικαιώματα διαχειριστή κατά την εκκίνηση της εφαρμογής. 1
Επισκέπτης Δημοσ. 8 Ιουνίου 2014 Δημοσ. 8 Ιουνίου 2014 Project -> Add New Item, επίλεξε το "Application Manifest File" και έπειτα άλλαξε το <requestedExecutionLevel>σε αυτό: <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> Αυτό θα ζητάει δικαιώματα διαχειριστή κατά την εκκίνηση της εφαρμογής. ναι το ξερω αυτο τελικα ετσι το εκανα ηθελα να μαθω αν γινοταν να παρει δικαιωματα διαχειριστη το προγραμμα οταν ηδη τρχει
vacilis Δημοσ. 8 Ιουνίου 2014 Δημοσ. 8 Ιουνίου 2014 ναι το ξερω αυτο τελικα ετσι το εκανα ηθελα να μαθω αν γινοταν να παρει δικαιωματα διαχειριστη το προγραμμα οταν ηδη τρχει Δηλαδη θες το πρόγραμμα σου καθώς τρεχει να εχει ενα κουμπί με την ασπίδα που ζηταει για δικαιώματα διαχειριστή... Τότε τσέκαρε το παρακάτω: using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; namespace FormTest { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { // Update the Self-elevate button to show a UAC shield icon. this.btnElevate.FlatStyle = FlatStyle.System; SendMessage(btnElevate.Handle, BCM_SETSHIELD, 0, (IntPtr)1); } [DllImport("user32", CharSet = CharSet.Auto, SetLastError = true)] static extern int SendMessage(IntPtr hWnd, UInt32 Msg, int wParam, IntPtr lParam); const UInt32 BCM_SETSHIELD = 0x160C; private void btnElevate_Click(object sender, EventArgs e) { ProcessStartInfo proc = new ProcessStartInfo(); proc.UseShellExecute = true; proc.WorkingDirectory = Environment.CurrentDirectory; proc.FileName = Application.ExecutablePath; proc.Verb = "runas"; try { Process.Start(proc); } catch { MessageBox.Show("No permission given!"); return; } Application.Exit(); } } }
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα