עבור לתוכן

קימפול תוכנה עם הרשאות מנהל #c

Featured Replies

פורסם

בשביל שתוכנה תוכל לקבל הרשאות מנהל צריך להוסיף manifest ולשנות את אחת השורות לשורה:

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

הבעיה היא, שקימפול בצורה הרגילה בvisual studio (זאת אומרת בעזרת אשף הpublish) יוצר את התוכנה בתור clickOnce, וclickOnce לא תומך באפשרות של הוספת הmanifest עם השורה הנ"ל.

איך אפשר לקמפל תוכנה בלי שזה יצור אותה בתור clickOnce?

פורסם

אני לא בטוח אם הבנתי אותך נכון אבל בשביל לדרוש הרשאות מנהל כשקובץ EXE נפתח אתה הולך להגדרות פרוייקט בויזואל, אח"כ ל-Linker ושמה יש Manifest File.

ואז משנה את ההגדרות ל-requireAdministrator

פורסם
  • מחבר

אני אסביר את עצמי.

אני בונה תוכנה שבין היתר רושמת את עצמה ברג'יסטרי, אחרי הקימפול כשאני מפעיל את התוכנה המחשב זורק לי שגיאה שאין לתוכנה הרשאה לזה .

בחיפוש קצר גיליתי שכדי שהתוכנה תעבוד בתור מנהל צריך להוסיף manifest עם השורה הנ"ל, אז זה מה שעשיתי.

ולא צריך ללכת להגדרות או משהו בסך הכל לוחצים "add new item" ומוסיפים manifest.

האמת עכשיו הפעלתי אותה בתור מנהל והיא לא רשמה את המפתח, אז אני לא סגור שזו הבעיה...

אז 1. האם יש למישהו פתרון?

2. אז למה משמש

requireAdministrator?

3. יש עוד דרך לקמפל את התוכנה בלי אשף הpublish?

נ.ב. זה הקוד להוספת הkey, אולי הבעיה בו...

RegistryKey rk = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
if (rk.GetValue("test") == null)
{
rk.SetValue("test", Application.ExecutablePath);
}
rk.Close();

פורסם

כן, תעשה build solution

פורסם
  • מחבר

זה לא עושה רק משהו זמני?

איפה נמצא הקובץ התקנה?

פורסם

אין קובץ התקנה הוא שם את כל האפליקציה בתיקיה שמוגדרת בפרוייקט בד"כ debug או release.

תחליט, אם אתה רוצה התקנה אוטומתית, או שתשתמש ב oneclick (ועם המגבלות שאין לי מושג מה יש לו) או שתשתמש במשהו אחר, או שאם אתה לא ממש צריך התקנה, תספק ZIP עם התוכן.

פורסם
  • מחבר

חייבת להיות אופציה לקמפל תוכנה שמוסיפים לה את הmanifest הזה, אחרת למה מייקרוסופט יצרה את האפשרות הזאת?

האפשרות הזאת היא לא איזה קומבינה מפוקפקת או משהו כזה זה ההוראות של מייקרוסופט.


<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.


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


Specifying requestedExecutionLevel node will disable file and registry virtualization.
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>

זה מתוך הmanifest, ועכשיו אני רואה שבכלל צריך למחוק את זה בשביל הרג'יסטרי...

פורסם

תבדיל בין לקמפל (שזה מה שאני המצלתי) לבין לקמפל וליצור התקנה אוטומטית (שזה מה שעשית עד כה כנראה). לפי התשובה הרשמית של מיקרוסופט הם בכוונה לא מאפשרים לאפליקציות של clickOnce לקבל הרשאות מלאות.

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/2dfd23ee-ebfa-412c-a5dd-761ec1b55683/problems-embedding-manifest-for-uac-execution-level-for-clickonce-application?forum=windowscompatibility

פורסם
  • מחבר

אהה, אוקיי, אז אני צריך סתם לקמפל ולמצוא תוכנה שתיצור את ההתקנה (קובץ הexe). יש המלצה לתוכנה ספציפית?

ארכיון

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

דיונים חדשים