无法以管理员身份在C#中修改注册表(或运行管理员级命令)

无法以管理员身份在C#中修改注册表(或运行管理员级命令),c#,.net,windows,registry,command-prompt,C#,.net,Windows,Registry,Command Prompt,我正在创建一个将修改Windows服务的应用程序。但是,由于某些原因,它不允许我运行“cs config SERVICE_NAME set=SETTING”或修改注册表来更改服务的启动设置,因为需要Admin我已经通过管理员帐户授予它完全管理员权限 无论我做什么,它都会出现一个错误,说它没有注册表的访问权限,或者它不会用CMD设置它,因为它没有权限。它遇到的特定服务称为“DCOM服务器进程启动器” 以下是我的应用程序清单中的安全设置 <trustInfo xmlns="urn:schema

我正在创建一个将修改Windows服务的应用程序。但是,由于某些原因,它不允许我运行“cs config SERVICE_NAME set=SETTING”或修改注册表来更改服务的启动设置,因为需要Admin我已经通过管理员帐户授予它完全管理员权限

无论我做什么,它都会出现一个错误,说它没有注册表的访问权限,或者它不会用CMD设置它,因为它没有权限。它遇到的特定服务称为“DCOM服务器进程启动器”

以下是我的应用程序清单中的安全设置

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
 <security>
  <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
    <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
  </requestedPrivileges>
  <applicationRequestMinimum>
    <defaultAssemblyRequest permissionSetReference="Custom" />
    <PermissionSet ID="Custom" SameSite="site" />
  </applicationRequestMinimum>
 </security>
</trustInfo>
以下是CMD过程代码:

        //Create a Hidden CMD Prompt to issue commands
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.UseShellExecute = false;
        processStartInfo.CreateNoWindow = true;
        processStartInfo.FileName = "cmd.exe";
        processStartInfo.Verb = "runas"; //should give it admin??
        cmd = Process.Start(processStartInfo);

经过大量研究,我找到了解决这个问题的办法。我在codeproject上使用了本文提供的示例:


在设置它并将其更改为我需要的方式后,所有Windows操作系统(至少是XP和更新版本)都可以正常工作。

经过大量研究,我找到了解决方案。我在codeproject上使用了本文提供的示例:

在设置它并将其更改为我需要的方式后,所有Windows操作系统(至少XP和更新版本)的一切都运行良好

        //Create a Hidden CMD Prompt to issue commands
        ProcessStartInfo processStartInfo = new ProcessStartInfo();
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.UseShellExecute = false;
        processStartInfo.CreateNoWindow = true;
        processStartInfo.FileName = "cmd.exe";
        processStartInfo.Verb = "runas"; //should give it admin??
        cmd = Process.Start(processStartInfo);