Προς το περιεχόμενο

c# run as administrator


Προτεινόμενες αναρτήσεις

Επισκέπτης
Δημοσ.

γινετε αφου ηδη τρεχει το προγραμμα κανονικα να ανοιξω αλλο form σαν administrator? αν ναι πως?

Δημοσ.

Γινεται, στην καινουργεια φορμα που ανοιγεις πρεπει να κανεις impersonate τον χρηστη που θες προγραμματιστικα. Sample Κωδικα θα βρεις πολυ ευκολα στο net

Δημοσ.

Αν εννοείς να πάρεις administrator privileges (aka elevation, η διαδικασία κατά την οποία τυπικά εμφανίζεται το dialog του UAC που σε ρωτάει αν θέλεις να δώσεις δικαιώματα στο πρόγραμμα να κάνει ό,τι θέλει) αφότου έχει ξεκινήσει η εκτέλεση της εφαρμογής σου, τότε δε μπορείς. Αυτό γίνεται μόνο κατά την εκκίνηση της εφαρμογής εφόσον έχεις συμπεριλάβει το κατάλληλο manifest (google "requireAdministrator").

 

@isim το impersonation είναι τελείως διαφορετικό. Καταρχήν δε μπορείς να κάνεις impersonate σε οποιοδήποτε API, μόνο σε όσα το υποστηρίζουν. Αλλά πιο σημαντικά, το να παριστάνεις έναν άλλο χρήστη του οποίου η εφαρμογή εξακολουθεί να μην είναι elevated... δε σε κάνει elevated.

Δημοσ.

@defacer Το ξερω οτι το impersonation ειναι διαφορετικο για αυτο και αναφερα οτι θα χρησιμοποιησει credentials αλλου χρηστη.

 

γινετε αφου ηδη τρεχει το προγραμμα κανονικα να ανοιξω αλλο form σαν administrator? αν ναι πως?

Το απο πανω μου θυμισε μια περιπτωση οπου θελαμε οι χρηστες να εχουν προσβαση read/write σε ενα directory μονο μεσω εφαρμογης. Kαι υλοποιηθηκε με user impersonation με τις ευλογιες του Audit.

Δημοσ.

Project -> Add New Item, επίλεξε το "Application Manifest File" και έπειτα άλλαξε το <requestedExecutionLevel>σε αυτό:

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Αυτό θα ζητάει δικαιώματα διαχειριστή κατά την εκκίνηση της εφαρμογής.

  • Like 1
Επισκέπτης
Δημοσ.

Project -> Add New Item, επίλεξε το "Application Manifest File" και έπειτα άλλαξε το <requestedExecutionLevel>σε αυτό:

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Αυτό θα ζητάει δικαιώματα διαχειριστή κατά την εκκίνηση της εφαρμογής.

ναι το ξερω αυτο τελικα ετσι το εκανα ηθελα να μαθω αν γινοταν να παρει δικαιωματα διαχειριστη το προγραμμα οταν ηδη τρχει

Δημοσ.

ναι το ξερω αυτο τελικα ετσι το εκανα ηθελα να μαθω αν γινοταν να παρει δικαιωματα διαχειριστη το προγραμμα οταν ηδη τρχει

Δηλαδη θες το πρόγραμμα σου καθώς τρεχει να εχει ενα κουμπί με την ασπίδα που ζηταει για δικαιώματα διαχειριστή...

Τότε τσέκαρε το παρακάτω:

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(); 
        }
    }
}

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...