一旦我的程序安装在客户端计算机上,如何强制我的程序在Windows 7上以管理员身份运行?
我正在尝试使用InstallUtil.exe安装服务但通过调用Process.Start.这是代码:
ProcessStartInfo startInfo = new ProcessStartInfo (m_strInstallUtil, strExePath);
System.Diagnostics.Process.Start (startInfo);
其中m_strInstallUtil是完全限定的路径和exe"InstallUtil.exe",并且strExePath是我的服务的完全限定路径/名称.
从提升的命令提示符运行命令行语法有效; 从我的应用程序运行(使用上面的代码)没有.我假设我正在处理一些进程提升问题,那么我如何在高架状态下运行我的进程?我需要看一下ShellExecute吗?
这一切都在Windows Vista上.我正在VS2008调试器中运行升级到管理员权限的进程.
我也试过设置,startInfo.Verb = "runas";但似乎没有解决问题.
我有一个WPF应用程序,我希望它能够始终作为管理员启动.我已经阅读了很多关于它的内容,似乎我必须创建自己的清单文件并将其传递给应用程序属性,以便在运行时int以管理员身份启动.
应用程序本身加载文件,有时文件可能需要管理员访问权限,因此可以修改.这就是为什么我在安装应用程序之后寻找一种方法,以便能够始终以管理员模式启动.
有没有办法以编程方式将字体永久添加到Windows 7/8 PC?我已经阅读了几篇关于AddFontResource DLL-Import的帖子,但似乎没有用.
除此之外,MSDN文档说明在重新启动计算机后将删除字体,除非将字体添加到注册表中.
如何永久安装字体?如何将字体添加到注册表?是否总是相同的名称/条目?
我必须在运行时动态添加字体,因为我会在用户选择字体后立即获取字体.
备注:我知道如何添加注册表项.我的问题更多的是关于Windows XP,Vista,7和8与不同字体类型之间的兼容性.也许有办法启动另一个为我安装字体的exe.
我试图通过C#应用程序执行具有管理员权限的程序,该应用程序仅使用用户权限进行调用.
码
        ProcessStartInfo psi;
        try
        {
            psi = new ProcessStartInfo(@"WINZIP32.EXE");
            psi.UseShellExecute = false;
            SecureString pw = new SecureString();
            pw.AppendChar('p');
            pw.AppendChar('a');
            pw.AppendChar('s');
            pw.AppendChar('s');   
            pw.AppendChar('w');
            pw.AppendChar('o');
            pw.AppendChar('r');
            pw.AppendChar('d');
            psi.Password = pw;
            psi.UserName = "administrator";
            Process.Start(psi);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
它确实启动winzip,但仅限用户权限.有什么我做错了,或者甚至有可能开始一个更高权利的过程?
谢谢!
编辑:这是问题背后的原因,也许它有助于理解我真正需要的东西.
我以winzip为例,大致了解了我的代码是不正确的.实际问题是,我们公司使用2个版本的程序.但在启动任何版本之前,您需要使用regsvr32(具有管理员权限)导入dll文件.现在我想编写一个程序,让用户选择版本,导入dll并启动正确的应用程序.
我有一个文件MyUtilities.exe.
当我跑:
Process.Start("MyUtilities.exe","SomeParameter");  
如果在没有管理员权限的情况下运行,则该进程的退出代码为0(OK).如果我以管理员身份运行该代码,退出代码为1!
由于我没有创建MyUtilities.exe我无法修改它.
最后我需要以Process.Start("MyUtilities.exe","SomeParameter");管理员身份运行并让它返回退出代码= 0.我设法做到这一点的方法是将其兼容性更改为:

(右键单击文件 - >属性 - >兼容性 - >以管理员身份运行此程序)
在更改之后,我现在能够以Process.Start("MyUtilities.exe","SomeParameter");管理员身份运行并返回退出代码0.
所以我的问题是如何更改该文件与代码的兼容性,这样我就不必告诉用户右键单击该文件然后更改设置.