![](/img/trans.png)
[英]Is there any ways to change the system DNS from a non admin user in C# WPF appl without running app with elevated privilege?
[英]Running MSI uninstaller with elevated privilege
我創建了一個Window Setup Project,並在主應用程序中添加了一些自定義安裝程序類,因此將其包含在Setup Project的Custom Action部分中。 我沒有使用任何第三方安裝程序只是簡單的Visual Studio安裝項目。
我有我的應用程序的自定義安裝程序類,在卸載函數中,我已經包含了一個函數來終止進程,並刪除在程序目錄中創建的額外文件。 它適用於Windows XP但不適用於7.所以我假設它與UAC有關。 如何強制運行具有管理員權限的卸載程序?
這里是我的卸載程序覆蓋代碼:
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
try
{
KillProcess();
DeleteAppPathFolder();
}
catch (Exception) { }
}
private void KillProcess()
{
for (; ; )
{
Process[] procMain = Process.GetProcessesByName("TaskbarNotificator");
if (procMain.Length > 0)
{
procMain[0].Kill();
}
else
break;
}
}
private void DeleteAppPathFolder()
{
FileInfo fileInfo = new FileInfo
(System.Reflection.Assembly.GetExecutingAssembly().Location);
string sProgram = Path.Combine(fileInfo.DirectoryName, GLOBALS.APP_DIR_NAME);
if (Directory.Exists(sProgram))
Directory.Delete(sProgram, true);
}
要使用完全權限運行自定義操作,您可以確保將其計划為延遲而不進行模擬。 基本上,它必須使用MSI中的msidbCustomActionTypeInScript和msidbCustomActionTypeNoImpersonate標志。
對於每個設置創作工具,這都是不同的。 如果您找不到設置方法,請向我們提供有關您用於創建MSI的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.