קימפול תוכנה עם הרשאות מנהל #c - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

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


eido300

Recommended Posts

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

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

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

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

קישור לתוכן
שתף באתרים אחרים

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

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

בחיפוש קצר גיליתי שכדי שהתוכנה תעבוד בתור מנהל צריך להוסיף 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();

קישור לתוכן
שתף באתרים אחרים

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

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

קישור לתוכן
שתף באתרים אחרים

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

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


<security>
<requestedPrivileges xmlns="urn:schemas--com:asm.v3">
<!-- UAC Manifest Options
If you want to change the 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

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...