2015-04-29 18 views
6

Yükseltilmiş bir programım var. Bu programdan diğer çalıştırılabilirleri çalıştırıyorum.Kullanıcı olarak çalışırken eşlenen sürücüye erişim

Şimdi varsayılan olarak oluşturduğum herhangi bir işlem Yükseltilmiş'yi çalıştıracaktır. Yani, ishal bazı programlar için, ben, onlar yükseltilmiş değil sanki onları çalıştırmak istiyorum giriş yapmış oluyor standart kullanıcı.

olarak ana Yükselmiş programı oturum açmış kullanıcının kullanıcı hesabı altında çalışıyor.

Yani bu ben Yükseltilmiş edilmez başlamış programda olduğu gibi çalışır

var psi = new ProcessStartInfo(Exe.GetExePath()); 
psi.UseShellExecute = false; 
psi.RedirectStandardError = false; 
psi.RedirectStandardInput = false; 
psi.RedirectStandardOutput = false; 
psi.WorkingDirectory = Exe.Version.GetInstallPath(); 
if(Exe.Elevated == false) 
{ 
    psi.UserName = Global.Username; 
    var pass = new SecureString(); 
    Global.Password.ToCharArray().ToList().ForEach(p => pass.AppendChar(p)); 
    psi.Password = pass; 
} 
Process = Process.Start(psi); 

çalıştığı şey budur. Ancak, bu noktada bazı tek bir sebepten dolayı tüm eşlenmiş ağ sürücülerine erişimi kaybeder.

Başlatılan uygulama içinden bu Impersonating a Windows user gibi bir şey yapmayı denedim ve ayrıca çalışmaz.

Sanırım merak ediyorum, bu eşlenmiş sürücülere nasıl erişim sağlayabilirim (tüm uygulamalar doğru kullanıcı tarafından çalışıyor).

+0

Ana yükseltilmiş programınız bir Windows hizmeti kullanılarak yeni uygulamaların başlatılması ? –

+0

Üzgünüm, her iki programın da oturum açmış kullanıcı olarak çalıştığından bahsetmiştim. Sadece program yükseltildi. –

+1

"Net use" öğesini yükseltilmiş kullanıcı olarak çalıştırdığınızda, ne iade ediliyor? – AutomationNation

cevap

0

Varsayılan olarak UAC davranışında, yükseltilmiş işleminiz farklı bir güvenlik bağlamında çalışır, bu nedenle eşlenen sürücülerden herhangi birine erişememelidir ve aynı süreçten doğduğunuz tüm işlemler için de aynı şey geçerli olur. Pencerelerde yükseltilmiş bir komut istemi çalıştırarak bunu basitçe test edebilirsiniz; varsayılan olarak yükseltilmemiş oturumun eşlenmiş sürücülerine erişiminiz yoktur.

bu davranış ve (eşlenen sürücü kurulumu, genel kayıt defteri değişikliklerini vb değiştirilmesi) olası geçici çözümler hakkında daha fazla ayrıntı için bu superuser questions bakınız.

UAC varsayılanlarını veya eşleme oluşturmayı değiştirmek bir seçenek değilse, (yükseltilmiş olsa da) olası bir geçici çözüm, uygulamanızı yükseltmeden başlatmak olabilir, ikinci, yükseltilmiş işleminizi başlatmak için yükseltme gerektiren kodun beklemesini bekleyin ve sonra geri arayın. orijinal uygulamalara (eşlenen sürücülerle bir güvenlik bağlamında çalışan), bir IPC yöntemiyle (örneğin, named pipes ile WCF)

+0

Cevabınızın gerçekten soruyu cevapladığını düşünmüyorum. –

+0

TL/DR? Sorunu, "... olası (ama karmaşık) bir çözümden sonra" diye düşündüm. " – Tewr

+0

Cevabımda eksik olan şey, bir süreci bir kez kaldırdığınızda, eşlemelerin kaybolmasıdır. Geri dönüş yok. Tabii ki, UAC'yi varsayılan olmayan bir davranışla çalıştırmazsanız (@AutomationNation tarafından yapılan yoruma cevap vermediğiniz için bunu bilmiyorum) – Tewr

İlgili konular