के साथ काम नहीं करता है, मैं ऊंचे विशेषाधिकारों के साथ ही छुपा खिड़की के साथ एक बाल प्रक्रिया (वास्तव में वही, कंसोल ऐप) शुरू करना चाहता हूं।विशेषाधिकारों को बढ़ाना UseShellExecute = false
मैं आगे क्या:
var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location)
{
UseShellExecute = true, // !
Verb = "runas",
};
var process = new Process
{
StartInfo = info
};
process.Start();
और इस काम करता है:
var identity = new WindowsPrincipal(WindowsIdentity.GetCurrent());
identity.IsInRole(WindowsBuiltInRole.Administrator); // returns true
लेकिन UseShellExecute = true
एक नई विंडो बनाता है और मैं भी मैं उत्पादन उपयोग नहीं कर सकते।
तो जब मैं आगे क्या:
var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location)
{
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false, // !
Verb = "runas"
};
var process = new Process
{
EnableRaisingEvents = true,
StartInfo = info
};
DataReceivedEventHandler actionWrite = (sender, e) =>
{
Console.WriteLine(e.Data);
};
process.ErrorDataReceived += actionWrite;
process.OutputDataReceived += actionWrite;
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
process.WaitForExit();
यह विशेषाधिकार तरक्की नहीं करता है और कोड ऊपर झूठी देता है। क्यूं कर??
BTW, आप 'DataReceivedEventHandler actionWrite = ...' और 'process.ErrorDataReceived + = actionWrite' लिख सकते हैं: यह एक अस्थायी फ़ाइल का उपयोग करता है। – SLaks
क्या आप UseShellExecute = true, Verb = "runas", और ErrorDataReceived ईवेंट @SLaks टिप्पणी के रूप में उपयोग कर परीक्षण कर सकते हैं? – Kiquenet