Tag: uac

在另一个用户上下文中执行代码

我的应用程序带有需要以管理员身份运行的清单,但应用程序的一部分是使用WNetAddConnection2映射驱动器,我相信由于凭据等原因,它需要在普通用户上下文中运行。有没有办法执行此操作普通用户上下文中的一些代码,无需创建单独的进程。 编辑 从我的评论到目前为止,但它不起作用。 我预计它不会因为我真的不明白我应该如何使用它。 如果我打开一个新问题,也许最好? class Program { [DllImport(“advapi32.DLL”)] public static extern bool ImpersonateLoggedOnUser(IntPtr hToken); [DllImport(“advapi32.DLL”)] public static extern bool RevertToSelf(); static void Main(string[] args) { IntPtr phToken = IntPtr.Zero; ImpersonateLoggedOnUser(phToken); MapDrives(); RevertToSelf(); } } 编辑 如果当前用户具有管理员权限,那么主进程将使用清单提升,在提升的代码中我想在用户非提升空间中运行命令,因为这似乎具有不同的环境变量等。我相信曾经线程启动它不能改变自己,它需要运行一个新的。

你如何从代码中调用exe并绕过可能的UAC行动呢?

我正在使用system.diagnostics.process以安静模式启动msi文件。 我得到退出代码1625,我怀疑它是因为UAC阻止它运行。 我已经关闭了UAC提示但没有骰子…… 如何确保我正确提升msiexec的权限以使其实际运行? 谢谢, 艾萨克

在Windows 7上启动C#exe而不提示UAC

我有C#可执行文件,我想在Windows 7上启动而没有对话框要求以管理员身份运行..所以这是我的程序内部启动名为testApp.exe的C#可执行文件的代码。 Process testApp = new Process(); testApp.StartInfo.FileName = “C:\\Program Files\\Common Files\\testApp.exe”; testApp.Start(); 我也为这两个节目创建了最小的节目。 app.manifest用于testApp.exe和app.manifest,用于启动testApp.exe的程序,然后我将两个清单中的以下行更改为: requestedExecutionLevel level =“requireAdministrator”uiAccess =“false” 当我双击testApp.exe运行它时,testApp.exe程序崩溃,但是当我以管理员身份运行它时,它运行正常,没有崩溃。 因此,当我运行启动testApp.exe的程序时,此行为也会发生相同的情况,testApp.exe崩溃。 我必须在这里做错事。 我是否需要更改清单的名称,因为我使用visual studio 2010生成的默认名称。 谢谢。

即使用户具有管理权限,App也无法写入注册表

我正在使用Visual Studio 2010,我正在编写一个程序,需要在HKLM\Software\myapp下设置(和读取)新的注册表值 该程序基于.NET 2.0,目前它在Windows 7 64位上运行。 这是我的ocde: RegistryKey softwareKey = Registry.LocalMachine.OpenSubKey(“Software”, true); RegistryKey MyKey = softwareKey.CreateSubKey(“MyApp”); RegistryKey = MyKey.CreateSubKey(“MyKey”); selfPlacingWindowKey.SetValue(“instaldateperson”, datestr + usrname); 我在运行Visual Studio 2010时遇到的问题是,它将运行应用程序但以我身份登录,我是本地管理员组的用户和成员..但是我无法创建密钥(尽管我是本地管理员组的一部分,谁有权这样做)。 我也不知道如何做它作为登录(但它也不是我想要的,因为那时我会把Adminuser和密码放在代码中,我已经是管理员了?所以为什么?) 如果根本不可能,是否有创建注册表项的选项? 不知何故将它们添加到项目中等等……我在这里有点困惑。

如何以编程方式将UAC的consent.exe带到前台?

如何(如果可能的话)将Vista / Win7 UAC同意对话框置于前台,当它在任务栏中最小化时? 例如,请考虑以下情形: 我的应用程序在启动期间检查更新,它下载新的更新文件,并在我的应用程序关闭之后通过在Process.StartInfo中提供管理员密码来执行它。 此时,如果用户或Windows本身设法从MSI安装程序窗口失去焦点(可能通过单击桌面或其他窗口),UAC会看到安装程序窗口不是前台窗口,因此会弹出一个闪烁的同意对话框进入任务栏。 一些不那么明亮的客户不明白我的应用程序尚未完成更新并尝试重新启动应用程序。 在这个阶段,我可以枚举正在运行的进程,并找到任务栏中闪烁的consent.exe。 问题是我无法把它带到前台。 我试图用user32.dll用不同的参数(恢复,显示,正常)调用ShowWindow(),但没有任何反应。 我确实检查了MainWindowHandle进程,看起来没问题(它不是零或负数)。 我猜测问题在于UAC为同意对话框(安全桌面)创建了不同的桌面会话。 如果用户可以单击任务栏中的闪烁图标以将同意对话框带到前台,那么还应该可以通过代码模拟这个吗? PS! 我正在使用C#

注册表中的RUNASADMIN似乎无法在Windows 7中运行

一段时间以来,我的程序的安装程序使用以下代码使我的应用程序以管理员权限运行。 但它似乎在Windows 7下没有任何效果。在Vista中它运行得很漂亮。 如果我右键单击快捷方式并告诉它以管理员身份运行,程序将正常启动。 但是通过使用下面的代码,它应该一直以这种方式运行程序。 它不再了。 有谁知道Win 7是否仍然使用此密钥? UAC也是顺便提一下。 Registry.SetValue(@”HKEY_CURRENT_USER\Software\Microsoft\Windows NT\ CurrentVersion\AppCompatFlags\Layers”, “C:\App\app.exe”, “RUNASADMIN”); 谢谢。

如何在没有UAC确认的情况下更改文件关联?

当我在.NET应用程序中使用文件关联时,我没有找到一种方法来设置它而没有UAC弹出确认对话框。 今天,当我打开uTorrent并查找文件关联时,我发现你可以启用(写入注册表)而无需UAC的任何确认。 怎么可能? uTorrent没有以管理员身份运行。 编辑: 好吧,我刚刚发现使用Process Monitor (Sysinternals),uTorrent.exe所做的是创建几个键( uTorrent和.torrent )但是在HKCU ( HKEY_CURRENT_USER )中,而不是在HKEY_CLASSES_ROOT 。 无论如何我在HKEY_CLASSES_ROOT也有这些键…也许安装程序创建了那些。 不确定。

在没有UAC的系统上执行具有管理员权限的应用程序

我有一个必须使用管理员权限执行的应用程序。 如果UAC开启,一切都很好。 但是,如果关闭UAC,则启动时没有提示(即使对于标准用户),应用程序也会以受限制的权限启动。 动词“runas”的启动过程不起作用。 有没有办法显示标准的UAC登录对话框并执行具有管理员权限的应用程序,即使关闭了UAC也是如此? 更新 :清单包括: 当UAC处于活动状态时,即可。 但是如果UAC关闭则不起作用。 更新2 :: MSDN记录了此行为步骤6:创建并嵌入应用程序清单(UAC) (请参阅表“标准用户帐户的应用程序启动行为”最后一行)。 所以我无法用任何清单来解决这个问题。 还有其他解决方案吗?

C#.NET – 如何确定目录是否可写,有无UAC?

我正在研究一个需要将文件复制到文件系统上给定目录的软件。 它需要适用于UAC感知操作系统(Vista,7)以及XP。 为了解决写入需要UAC提升的目录的问题,应用程序实际上启动了另一个进程,其中包含一个表明需要UAC的清单。 这会生成提示,然后在用户确认时执行复制。 从我所看到的,一个目录可以有三种不同的逻辑权限状态 – 可写,没有UAC提升,可写入UAC提升且不可写。 我的问题是:对于给定目录,如何可靠地确定当前用户是否可以将文件复制(并可能覆盖)到该目录,如果可以,我如何确定是否需要UAC提升? 在XP上,这可能就像检查是否授予“允许写入”权限一样简单,但在Vista / 7上,有些目录未授予此权限,但UAC仍然可以执行此操作。

Visual Studio安装项目:如何强制卸载程序以管理员模式运行?

我已经创建了一个Visual Studio安装项目,我为我的主应用程序创建了一个安装程序类。 在此安装程序类中,我重写了卸载程序function以清除我的应用程序创建的额外文件夹。 这在Windows XP中运行良好,但在Windows 7中没有,因为我认为它与UAC有关。 如何强制卸载程序提升权限? 我在另一篇文章中提到了这个问题,但我并不清楚我的意图。 我找到了这些链接,但我不知道它是否相关: http://msdn.microsoft.com/en-us/library/aa370852.aspx http://msdn.microsoft.com/en-us/library/aa370134%28v=VS.85%29.aspx 更新(11/7/2011) 我发现了Orca ,它可用于修改msi安装应用程序属性,但没有适当的文档,(或示例/教程)。 以下是我为解决此问题所采取的步骤: 用Orca打开appInstal.msi。 从左表中单击customAction 在所有行的末尾添加一个新条目(通过双击一个新行) 键入Elevate_Install_Uninstall for Action名称,输入3072表示类型 为目标键入ALL并将Source保留为空 希望这有助于某人/