0

我正在制作程序,该程序应该以管理员权限启动一个进程并且它应该被隐藏我试过这个但它不起作用

 ProcessStartInfo startInfo = new ProcessStartInfo(Application.StartupPath + "\\launcher.exe");
           startInfo.WindowStyle = ProcessWindowStyle.Hidden;

           startInfo.CreateNoWindow = true;  
           Process.Start(startInfo);
4

2 回答 2

1
SecureString pass = new SecureString ();
foreach (char c in "yourpassword".ToCharArray())
{
    pass.AppendChar(c);
}    
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = Application.StartupPath + "\\cmd.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.Domain = "yourdomain"
startInfo.UserName = "yourusername"
startInfo.Password = pass;
Process.Start(Info);

只需根据需要填写即可。

要提升您必须提示输入 UAC,为此您可以使用

startInfo.Verb = "runas";

或创建一个清单文件,右键单击您的项目 -> 添加项目 -> 清单文件

找到写着的那一行

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

并将其更改为

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
于 2012-12-12T12:21:45.563 回答
0

隐藏窗口?那么你应该试试这个:

[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();

[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);

private const int c_SwHide = 0;
private const int c_SwShow = 5;

通过使用以下方法:

static void Main()
{
    ShowWindow(GetConsoleWindow(), c_SwHide);
}

希望这可以帮助。:) 如果要再次显示,只需将第二个参数“c_SwHide”替换为“c_SwShow”即可。

于 2014-02-27T15:47:06.093 回答