2008-09-18 81 views
3

我正在研究VB.NET中的一個小應用程序。該程序需要管理員權限才能執行某些任務。如果程序在執行過程中是否有辦法請求管理員權限?程序如何要求管理員權限?

更改運行應用程序的用戶帳戶的一般方法是什麼?

+2

看起來你已經發布了兩次相同的問題:http://stackoverflow.com/questions/90674/how-does-a-program-ask-for-administrator-privileges – 2008-09-18 07:26:44

回答

3

根據您的需要,有多種方法。一些細節在the application developer requirements for UAC中給出。

  1. 包含一個UAC清單,它使您的程序在啓動時需要管理員權限。
  2. 使用建議的方法之一來調用提升用完流程。其中一個最好的方法是使用the COM elevation monikerCoCreateInstanceAsAdmin來調用以管理員身份運行的COM對象上的方法。這對於在VB.Net中工作可能非常棘手。我在C++中可以正常工作,儘管
  3. 另一個好方法是將需要管理員權限的代碼部分分離到使用UAC清單要求管理員權限的應用程序中。在這種情況下,您的主應用程序不需要以管理員身份運行。當您需要管理員權限時,您將調用外部應用程序。
+0

我使用了方法3,但它只是在Win7上工作,它不能在Vista上工作,相反,給我「System.ComponentModel.Win32Exception(0x80004005)請求的操作需要提升」 – 2011-03-27 07:10:38

1
Try 
        Dim procInfo As New ProcessStartInfo() 
        procInfo.UseShellExecute = True 
        procInfo.FileName = 'Filename here 
        procInfo.WorkingDirectory = "" 
        procInfo.Verb = "runas" 
        Process.Start(procInfo) 
       Catch ex As Exception 
        MsgBox(ex.Message.ToString(), vbCritical) 
       End Try 
      End If 
0

最簡單的方法來做到這一點是單擊項目選項卡上 - >添加Windows窗體 - > .XML文件 - >命名(程序名).manifest的 - >粘貼此代碼在此link(謝謝JDOConal) - >然後在解決方案資源管理器框中右鍵單擊您的項目名稱,然後按屬性 - >在第一個選項卡上選擇清單,然後選擇您創建的.manifest文件 - > build = done!