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