我需要将我的应用程序赋予管理员权限,但我知道它将在用户会话中运行而不是管理员帐户。
我已经查看了其他网站,但没有找到任何有用的信息。
我尝试编辑清单等其他方法,并插入了以下行:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
当我尝试使用ClickOnce发布时,这给了我一个错误,但在调试时没有。
你能帮助我吗?
我需要将我的应用程序赋予管理员权限,但我知道它将在用户会话中运行而不是管理员帐户。
我已经查看了其他网站,但没有找到任何有用的信息。
我尝试编辑清单等其他方法,并插入了以下行:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
当我尝试使用ClickOnce发布时,这给了我一个错误,但在调试时没有。
你能帮助我吗?
// 2. Run Photoshop action on this image (and wait for the task to complete)
if (string.IsNullOrWhiteSpace(this.PhotoshopEnhanceActionAbsPath) == false)
{
var pi = new ProcessStartInfo(this.PhotoshopEnhanceActionAbsPath, "\"" + imgPhotoshopActionAbsPath + "\"");
pi.UseShellExecute = true;
pi.Verb = "runas";
var photoshopAction = Process.Start(pi);
var success = photoshopAction.WaitForExit();
if (success == false)
{
// do something here
}
}
这种方法对我非常有效。关键在于:
pi.UseShellExecute = true;
pi.Verb = "runas";
它以管理员权限运行您的EXE文件,因此UAC提示将在那时显示。这里还有一个好处是,用户可能不会每次使用应用程序时都运行这个特定的逻辑 - 因此当他们不需要时,他们不会被提示所困扰。
我相信这种行为是有意为之的。
ClickOnce 应用程序旨在可在没有管理员权限的情况下安装。无法在运行时提升它们的权限,因为这意味着实际上一个没有管理员权限的用户可以安装并以管理员身份运行应用程序;这将是一种安全风险。