2009-11-25 49 views
1

我想在windows vista下的C#2005 express版本中構建自動化應用程序。問題是,無論何時我嘗試運行此應用程序,無論是從IDE還是在Vista下直接編譯的可執行文件,它都會要求提升管理員權限,但同一個可執行文件通常在XP下運行!C#2005控制檯應用程序總是需要提升的權限

我無法理解,如果這個問題是由於表現還是其他什麼東西......

感謝,

+0

只是其他人給出的答案的旁註。 Windows XP沒有UAC,因此用戶通常具有管理員權限,因此不存在任何問題。這是人們在Vista中使用UAC時遇到的最大問題,那就是設計的軟件設計不當(軟件在UAC出現時不會/不應該是必須的),因此在XP下運行良好。 – 2009-11-25 06:43:12

回答

3

首先,我想update to 2008 Express; 2005 Express不再可供下載,但2008 Express仍可以以.NET 2.0爲目標,此外還可爲您提供3.0/3.5的優點。它仍然是免費的。其實,2010 Express即將發佈!尤其是,你會發現越來越難找到能夠回答2005 Express 特定於IDE的問題的人,因爲很少有人仍然安裝了2005 Express。


添加應用程序清單文件(通過IDE) - 它將顯示爲app.manifest;它應該增加(默認):

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

哪些應(IIRC)的幫助 - 但一個:其中該應用從,和b運行:它有什麼作用? (它是否嘗試編輯註冊表等)。

+0

感謝Marc的回覆,但我在此處發佈之前嘗試了此解決方案,但未解決問題。 :( – DexTer 2009-11-25 07:48:11

3

除了Marc的回答:如果可執行文件包含「setup」或「install」作爲其名稱的一部分,則UAC會要求管理員權限,而不管清單是否存在。唯一的解決方法是將.exe重命名爲不包含這些關鍵字的內容。

編輯:'更新'也是這樣一個關鍵字。請參閱有關UAC的此Technet article

+2

有趣的,不知道,出於好奇,但你有一個信息來源? – RCIX 2009-11-25 06:39:21

+0

在technet描述: http://technet.microsoft.com/en-us/library/cc709628( WS.10).aspx 此外'更新'就是這樣一個關鍵字。 – 2009-11-25 06:43:25

0

如果您的應用程序嘗試執行需要提升權限的事情(例如寫入Program Files文件夾或註冊表的某些區域),它將需要提升或失敗。在XP下它根本不會要求提升;它只會失敗,如果它沒有它需要運行的權限(但通常人們在XP下運行具有管理權限,所以這通常不是問題)

要添加一個「gotcha」到現有的回答: 如果您在.exe上使用文件屬性(兼容性選項卡)強制它以「以管理員身份運行」,它將始終在運行時詢問提升。不直觀的是,這是永久應用到路徑名稱,所以即使您刪除.exe並安裝一個新的,「管理員」設置仍然適用!您必須專門打開屬性並禁用該屬性才能再次將其刪除。