2013-06-18 115 views
6

我有一個C#.NET應用程序,我正在維護大約20個支持程序集。UAC如何知道應用程序需要提升權限?

當它啓動時,窗口顯示UAC對話框,上面寫着:
是否要允許以下程序進行修改,這臺計算機。

如果我禁用該文件的屬性對話框中的「以管理員身份運行」複選框,我得到一個對話框:
無法運行[應用程序名稱]。用戶帳戶「[我]」沒有足夠的權限來寫
C:\ ProgramData [公司] [應用程序名稱]

此應用程序將嘗試寫入這是造成UAC到ProgramData目錄請求用戶許可。

UAC如何知道應用程序要寫入ProgramData?
我可以更改什麼,以便UAC不會抱怨?

+0

有幾個,這樣覆蓋這個特定主題的問題。有沒有解決你的問題?至於UAC不抱怨 - 你有2個選項 - 1.你需要點擊它,或2.你需要禁用UAC。 UAC在那裏爲用戶提供保護(不管煩惱:\) – sircapsalot

+0

您是否嘗試過不寫'C:\ ProgramData [公司] [應用程序名稱]'? – Dennis

+0

該應用程序將大量文件存儲到ProgramData中,並與所有用戶共享。也許有一個更好的地方可以放置共享數據。 – Robert

回答

3
  1. 如何UAC知道應用程序會寫入ProgramData

    • ProgramData可能是「受保護目錄」的過程中UAC架構的虛擬化進程列表下。 (來源需要) enter image description here
  2. 什麼我可以改變,以使UAC不抱怨嗎?

    • 夫婦在這裏的選項 -
      1. 看來,你試圖寫C:\ProgramData[Company][Product]
        對我來說,這看起來像一個路徑分離的問題。你正在嘗試創建[或使用]一個名爲C:\ProgramDataAdobePhotoshop 的目錄,如果你的應用程序沒有分開這些目錄,那麼我會認爲這是導致你的UAC問題。嘗試添加你的路徑分隔符。 C:\ProgramData\Adobe\Photoshop [舉例]
      2. 禁用UAC? UAC是爲了防止未經授權的活動,並且如果您查看上面的流程圖,任何具有寫入「受限目錄」或任何「高級操作」簽名的應用程序都將處於UAC提示符下並觸發UAC提示。你的用戶會點擊它,一切都很好。
      3. 使用應用程序數據文件夾,而不是ProgramData文件夾。該文件夾似乎是隱藏的原因。

我的建議 - 對於需要故事數據的應用程序 - 使用用戶Application Data而非ProgramData文件夾。如果您使用此目錄,則不會得到任何UAC提示。(this question可以與幫助)

0

這是可能的應用程序有一個清單文件像這樣:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="requireAdministator" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

如果有,則requestedExecutionLevel level="requireAdministator將導致其顯示UAC對話框。

清單文件通常會被稱爲app.manifest

相關問題