Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在没有UAC提示的情况下从.NET应用程序执行进程_C#_.net_Uac_Processstartinfo - Fatal编程技术网

C# 在没有UAC提示的情况下从.NET应用程序执行进程

C# 在没有UAC提示的情况下从.NET应用程序执行进程,c#,.net,uac,processstartinfo,C#,.net,Uac,Processstartinfo,我有一个场景,我需要从我的.NET应用程序启动一个EXE,但我无法绕过弹出的UAC提示符。即使在启动另一个EXE之前,也会触发该提示符-可能是在调用Process.Start时触发的 我使用以下代码启动应用程序: var info = new ProcessStartInfo(path, "params"); info.Verb = "runas"; try { Pro

我有一个场景,我需要从我的.NET应用程序启动一个EXE,但我无法绕过弹出的UAC提示符。即使在启动另一个EXE之前,也会触发该提示符-可能是在调用
Process.Start
时触发的

我使用以下代码启动应用程序:

            var info = new ProcessStartInfo(path, "params");
            info.Verb = "runas";
            try
            {
                Process.Start(info);
            }
            catch (System.ComponentModel.Win32Exception)
            {
                // Person denied UAC escallation
                return false;
            }
两个EXE(我的应用程序和其他EXE)在其清单中都定义了以下内容:

    <requestedExecutionLevel level="asInvoker" uiAccess="false" />


如何在不触发UAC提示的情况下执行另一个EXE,并使其具有与调用应用程序相同的访问令牌(以便它可以更改应用程序文件夹中的文件等)?

要防止在启动第二个EXE时出现UAC提示:

1) 不要使用Verb=“runas”——这样每次都会给你UAC

2) 不要对EXE使用类似安装程序的文件名。以下是以下规则:

在创建32位进程之前, 将检查以下属性 以确定它是否为 安装程序:

文件名包括关键字,如 “安装”、“安装”、“更新”等

以下版本控制中的关键字 资源字段:供应商、公司名称、, 产品名称、文件

说明,原始文件名, 内部名称和导出名称

并列清单中的关键字 嵌入在可执行文件中

特定字符串表中的关键字 在可执行文件中链接的条目

链接的RC数据中的关键属性 在可执行文件中

内存中的目标字节序列 可执行文件


我最初没有动词,在查找修复后将其固定在那里。没有帮助,没有让事情变得更糟。你的第二个exe文件名是什么?有一些规则会触发文件名的UAC,如“setup”、“install”等。我刚刚把它命名为“mytest.exe”,并再次获得了UAC。请确保取出runas,这将触发UACregardless@shsmith抢手货你可能想把这个作为一个答案,这样我就可以接受了。谢谢奇怪的是,我认为清单文件优先于安装启发法。显然它没有-这是我这边的问题