2014-02-24 73 views
0

我有一個啓動遠程IE的代碼。我希望以「以管理員身份運行」選項啓動應用程序。
這個如何實現?C#以管理員身份運行遠程桌面應用程序

private static void StartSession(string hostName) 
{ 
    var filespec = Path.Combine(GetRootFolderSpec(), "session.rdp"); 

    if (File.Exists(filespec)) File.Delete(filespec); 
    var settings = GetRdpSettings(hostName); 
    File.WriteAllText(filespec, settings); 
    File.SetAttributes(filespec, FileAttributes.Hidden); 
    Process.Start(filespec); 
} 

private static string GetRdpSettings(string hostName) 
{ 
    return @"redirectclipboard:i:1 
    redirectposdevices:i:0 
    redirectprinters:i:0 
    redirectcomports:i:1 
    redirectsmartcards:i:0 
    devicestoredirect:s: 
    drivestoredirect:s: 
    session bpp:i:32 
    prompt for credentials on client:i:1 
    span monitors:i:1 
    use multimon:i:1 
    remoteapplicationmode:i:1 
    server port:i:1111 
    allow font smoothing:i:1 
    screen mode id:i:1 
    smart sizing:i:1 
    promptcredentialonce:i:1 
    authentication level:i:2 
    gatewayusagemethod:i:2 
    gatewayprofileusagemethod:i:0 
    gatewaycredentialssource:i:0 
    full address:s:" + hostName + @" 
    alternate shell:s:||iexplore 
    remoteapplicationprogram:s:||iexplore 
    gatewayhostname:s: 
    remoteapplicationname:s:iexplore.exe 
    remoteapplicationcmdline:s:"; 
} 
+0

你必須要能夠補充一點可以運行,而不是IE等軟件的目標計算機的任何控制? (例如,使用你自己的''alternate shell''參數的程序,讓它啓動IE,然後等待它關閉。)。此外,如果這是除IE以外的其他應用程序,我認爲你會有更多的選擇。你總是在做IE嗎,或者你是否選擇了這個例子? –

+0

謝謝斯科特。對於我正在處理的項目,使用IE是必需的。目標計算機可能因不同的客戶而異。所以硬編碼也將被省略。 – zeetit

+0

暫時擱置一會兒。您是否想以管理員身份運行'mstsc.exe'(遠程桌面程序),還是想要以管理員身份在要連接的服務器上運行iexplore.exe? –

回答

0

如果您在Windows或以上運行

if (Environment.OSVersion.Version.Major >= 6) 
{ 
    processStartInfo.Verb = "runas"; 
} 
+0

上失蹤感謝Simone,但是如果我使用processStartInfo,即processStartInfo.FileName = filespec;的Process.Start(的ProcessStartInfo);該代碼無法識別session.rdp的路徑 – zeetit

相關問題