2013-02-04 26 views
0

我的程序currrent有該行DllRegisterServer具有提升的權利

狀態:= DllRegisterServer;

在WIN7的計算機上失敗並且該用戶不是管理員。

是否有可能以提升的權限以編程方式調用DllRegisterServer?

或者有什麼方法可以提示提升權限,然後使用該信息來執行DllRegisterServer。

回答

3

只能在創建過程時執行高程。所以你需要一個新的過程來執行這個代碼。您的主要選項:

  1. 調用ShellExecute傳遞動詞runas和一個exe文件。這將提升新的過程。
  2. 將requireAdministrator清單添加到可執行文件並運行它。
  3. 使用超出proc COM服務器並啓動它提升。

在這些選項中,數字1可能會更簡單。對於選項1,不需要單獨的可執行文件。您可以傳遞將導致調用註冊函數的命令行參數。

1

沒有辦法以編程方式提升程序的權限,只有用戶纔打算這樣做。你可以通知程序需要提升權限的OS,例如,通過包括清單

How to add manifest <requestedPrivileges> info into delphi project

您也可以決定讓你的程序沒有提升的權限運行(不納入清單),但後來禁用所有需要提升權限的操作或重新啓動程序,以在非升級過程中調用該選項時請求提升的權限(非常類似於任務管理器使用「所有用戶的顯示過程」按鈕:

Delphi: How to start application with elevated status and wait for it to terminate?