Tag: uac

标记MSI,因此必须以提升的管理员帐户运行

我有一个CustomAction作为MSI的一部分。 它必须作为域帐户运行,该帐户也是本地Administrators帐户的成员。 它不能使用NoImpersonate标志将自定义操作作为NT Authority \ System运行,因为它不会访问网络资源。 在启用了UAC的Vista / 2008上,如果NoImpersonate处于关闭状态,则它将作为执行用户运行,但具有非特权令牌,并且无法访问本地资源,例如.installState。 请参阅UAC架构 任何人都知道一种方法 强制MSI使用提升的令牌运行,就像从提升的命令提示符运行一样? 强制CustomAction运行提升(清单中的requireAdministrator似乎不起作用)? 如果UAC已启用且未升级并且是否已警告或取消安装,请确定?

从升级过程开始非升级过程

可能重复: 如何在Vista(.NET)中运行NOT raise 如何取消提升子进程的权限 我的程序作为一个提升的进程运行,并使用Process.Start()启动新进程。 出于安全原因,我希望将这些新进程作为非高架运行。 怎么做?

在Windows 7和Vista中存储应用程序数据的位置

像大多数人一样,我的应用程序需要存储数据。 该应用程序以前仅在XP上使用,它将数据存储在Program Files 。 既然我们的客户正在转向Windows 7,我必须升级它,以便将数据存储在新文件夹中。 我选择了ApplicationData文件夹,因为我认为在不需要UAC的情况下我将被允许访问。 现在在一些Windows 7机器上这很好,但是在其他机器上访问该文件夹失败,可能是因为权限,但是当使用Administrator privelidges运行时,程序运行正常。 我使用错误的文件夹还是这些情况是exception值? 无论哪种情况,这种事情的最佳做法是什么? 我使用以下C# SpecialFolder来获取AppData文件夹位置。 System.Environment.SpecialFolder.ApplicationData

P / Invoke教程?

有谁知道在System.Runtime.InteropServices名称空间中有深入的好教程/电子书? 我刚刚阅读了本教程,了解如何使UAC屏蔽显示在一个按钮中,现在我真的想学习这个。 PS如何在Windows系统文件中查看是否存在在按钮中显示UAC屏蔽的方法?

c#从UAC管理员级别进程降低权限启动进程

我的应用程序有一个主要问题。 我有一个应用程序和更新程序作为单独的exe文件。 当更新可用时,更新程序会执行更新,并在进程完成时启动我的应用程序。 主要问题是 – 应用程序安装在程序文件文件夹中,因此更新程序需要UAC管理员权限,这没关系,但是当我需要运行我的应用程序时,更新程序需要以普通用户身份运行它,因为如果它以管理员身份运行和drop不起作用(不是应用程序问题,UAC阻止它)。 我已经尝试了几种不同的解决方案,甚至这一个: 如何在Vista(.NET)中运行NOT raise 它没有帮助我 – 我的应用程序是以管理员身份运行的。

UAC提升不允许拖放

我有一个.net应用程序,我需要通过访问一些低级别的win API来提升管理员权限。 我在应用程序清单中使用requestedExecutionLevel设置为requireAdministrator。 该应用程序还需要从Windows资源管理器接收拖放请求。 我已经尝试在清单中将uiAccess设置为true并遵守其他要求,例如应用程序的authenticode签名,安装在限制位置(程序文件)等。应用程序运行正常,没有任何错误(在vista,win 7),用户获取UAC提示提升。 但仍然无法接受拖放请求。

UAC需要控制台应用程序

我有一个控制台应用程序,需要使用一些需要管理员级别的代码。 我已经读过我需要添加一个Manifest文件myprogram.exe.manifest,它看起来像这样: 但它仍然没有提升UAC(在控制台或在VS中进行调试)。 我该如何解决这个问题? 更新 如果我在Administrator中运行解决方案或在Administrator中运行/bin/*.exe,我能够使其工作。 我仍然想知道是否有可能在应用程序启动时弹出而不是显式右键单击>以管理员身份运行?

如何使用.NET升级COM组件

我发现了一篇关于如何通过调用CoCreateInstanceAsAdmin来提升用C ++编写的COM对象的文章 。 但是我无法找到或做的是将.NET(c#)应用程序的一个组件实现为COM对象,然后调用该对象来执行需要UAC提升的任务。 MSDN将此文档记录为管理COM对象模型 。 我知道以管理员身份启动应用程序(或其他应用程序)是可能的,并且很容易在单独的过程中执行任务(例如参见Daniel Moth的post ,但我正在寻找的是一种方式从同一个未提升的.NET可执行文件中做所有事情。当然,这样做会在新进程中生成COM对象,但是由于透明的编组,.NET COM对象的调用者不应该(也是很多)意识到这一点。 关于如何使用C#项目,通过CoCreateInstanceAsAdmin API实现用C#编写的COM对象的任何想法都会非常有用。 所以我真的很想学习如何在C#中编写COM对象,然后我可以通过COM高程API从C#调用它。 不要紧,boost的COM对象是否在同一进程中运行。 我只是不想让整个应用程序升级; 我只想提升将执行代码的COM对象。 如果我能写出一些东西: // in a dedicated assembly, marked with the following attributes: [assembly: ComVisible (true)] [assembly: Guid (“….”)] public class ElevatedClass { public void X() { /* do something */ } } 然后让我的主应用程序通过CoCreateInstanceAsAdmin调用实例化ElevatedClass 。 但也许我只是在做梦。

如何将应用程序范围设置变为只读?

如果它们无法从默认值改变,它们有什么用? 修辞问题。 首先,绕过设置系统并直接写入应用程序范围设置文件的最佳方法是什么(下一段中的安全问题)? 的XmlReader / XmlWriter的? IIRC,如果应用程序试图写入其Program Files文件夹,Windows Vista和7会做一些魔术来防止这种情况发生。 我想我需要调用UAC进行升级,我必须在我的应用程序的“选项”窗口的“确定”按钮上添加该花式盾牌图标,依此类推。 链接到快速操作方法? 或者,您可以告诉我,我正在尝试做的是愚蠢的,我应该将我可变的应用程序范围设置存储在其他地方。

使用UAC打开具有不同凭据的Process.Start

我正在尝试使用在启用UAC的情况下以不同凭据运行的Process.Start启动另一个进程。 我收到以下错误: System.ComponentModel.Win32Exception:登录失败:用户帐户限制。 可能的原因是System.Diagnostics.Process.Start()上的System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)强制执行了不允许空白密码,登录时间限制或策略限制 在System.Diagnostics.Process.Start(ProcessStartInfo startInfo) 如果我关闭UAC,它可以正常工作。 如果我在没有指定用户名和密码的情况下启动该过程,它可以正常工 以下是代码的副本: ProcessStartInfo processInfo = new ProcessStartInfo(); processInfo.Verb = “runas”; processInfo.FileName = command; processInfo.Arguments = parameters; processInfo.UserName = txtUserName.Text; processInfo.Password = password; processInfo.Domain = “myDomain”; processInfo.UseShellExecute = false; processInfo.LoadUserProfile = true; Process.Start(processInfo); 我相信这与桌面会话有关,但我不确定为什么它在UAC关闭时有效。 任何关于如何在不关闭UAC,修改注册表或更改本地/组策略的情况下使其工作的想法将非常受欢迎。 谢谢 编辑 具有上述代码的进程以管理员身份启动: static void Main(string[] args) { //make sure we are running […]