עבור לתוכן

פקודה להרצת קוד C# במנהל בצורה אוטומטית

Featured Replies

פורסם

אני רוצה שהתוכנה תפעל כמנהל באופן אוטומטי, ברגע שמפעילים אותה היא תבקש אישור מנהל

ניסיתי עם mainfest ללא הצלחה, אין אפשרות להגדיר לו mainfest ב VS10

ניסיתי את זה

      ProcessStartInfo pi = new ProcessStartInfo();
pi.Verb = "runas";
pi.FileName = Application.ExecutablePath;
Process.Start(pi);

ניסיתי לשים אותו במקומות שונים, אבל יש לו כמה בעיות.

1.הוא נפתח פעמיים, פעם כמנהל ופעם לא.

2.הוא נפתח בלי סוף.

3.ברגע שמפעילים את התוכנה לאחר שאני מאשר לו הרשאת מנהל, התוכנה נעלמת ונפתחת מחדש כמנהל.

פורסם

ברור, הרי אתה מפעיל את האפליקציה מתוך עצמה. זה כמו רקורסיה אינסופית.

אתה צריך להפעיל את האפליקציה מתוך אפליקציה אחרת, או לבדוק בדרך כלשהי אם האפליקציה כבר רצה כמנהל.

פורסם
  • מחבר

ניסיתי את זה, אבל עדיין נפתח פעמיים

      WindowsPrincipal pricipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
bool hasAdministrativeRight = pricipal.IsInRole(WindowsBuiltInRole.Administrator);
if (!hasAdministrativeRight)
{
ProcessStartInfo pi = new ProcessStartInfo();
pi.Verb = "runas";
pi.FileName = Application.ExecutablePath;
Process.Start(pi);
}

עריכה: אופסס, טעות שלי. שאני מנסה עכשיו זה כן עובד

כניראה אתמול מיקמתי את זה במקום לא טוב xD

פורסם
  • מחבר

משום מה זה עדיין לא עובד.

חשבתי שזה עבד בגלל שהגדרתי לו ב manifest שירוץ כמנהל וזה עבד

עד שגיליתי שברגע שמעבירים את הקובץ זה מתבטל.. משהו מוזר.

למישהו יש רעיון ? אני משתמש ב VS10

פורסם

למה להסתבך כ"כ במקום פשוט לשים תנאי בmain של האפליקציה?

אם מדובר במנהל, אז להקפיץ בקשה לאישור, אם לא, אז להקפיץ הודעת שגיאה ולסגור.

אם המנהל אישר, אז להריץ את שאר התוכנית.

אין צורך להתחיל להדליק פרוססים חדשים...

פורסם
  • מחבר

ניסיתי להשים את הקוד הזה ועדיין נפתח פעמיים, על איזה פקודה אתה מדבר ?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים