Gå til innhold

C#: Unngå Network password når Windows Explorer er startet som Administrator?


Anbefalte innlegg

Jeg har laget en applikasjon som startes som administrator. Det jeg prøver å få til, er å åpne loggkataloger på maskiner som er på samme nett uten å måtte skrive inn credentials i "Network password" i dialogboksen til Windows Explorer. Jeg har sett at det er mulig å åpne en katalog på en annen maskin i ett annet program som heter 'SCCM Client Center'. Spørsmålet er bare hvordan det er blitt løst i SCCM Client Center.

 

Hvis jeg starter en ny prosess i min applikasjon med denne koden:

 

    
var logdirectory = @"\\mycomputer\c$\windows\logs\";

Process Explorer = new Process();
Explorer.StartInfo.Verb = "runas";
Explorer.StartInfo.FileName = "Explorer.exe";
Explorer.StartInfo.Arguments = logdirectory;
Explorer.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
Explorer.StartInfo.UseShellExecute = false;
Explorer.Start();

 

Så vil jeg få opp et vindu som spør etter mine credentials (network password).

 

Jeg har også lagt inn et manifest for programmet:

 

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
 <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
   <security>
     <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
       <!-- UAC Manifest Options
           If you want to change the Windows User Account Control level replace the 
           requestedExecutionLevel node with one of the following.

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

           Specifying requestedExecutionLevel node will disable file and registry virtualization.
           If you want to utilize File and Registry Virtualization for backward 
           compatibility then delete the requestedExecutionLevel node.
       -->
       <requestedExecutionLevel level="asInvoker" uiAccess="false" />
     </requestedPrivileges>

     <applicationRequestMinimum>
       <defaultAssemblyRequest permissionSetReference="Custom" />
       <PermissionSet class="System.Security.PermissionSet" version="1" ID="Custom" SameSite="site" Unrestricted="true" />
     </applicationRequestMinimum>
   </security>
 </trustInfo>
 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
   <application>
   </application>
 </compatibility>
</asmv1:assembly>

 

Det som var planen med manifestet, var å se om den fikk vekk spørsmålet om credentials, uten særlig hell. Har også

prøvd

 

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

 

som ikke gjør noe annet enn å kreve at brukeren kjører programmet som administrator.

 

Noen som har tanker om emnet?

Lenke til kommentar
Videoannonse
Annonse

Jeg ville nå tro at du aldri ville kunne lese filer fra en annen datamaskin dersom du ikke har tilgang (bruker&passord) på denne. I så fall hadde det vært en gigantisk sikkerhetsbrist.

 

Manifestet har vel kun med applikasjonen din å gjøre lokalt på maskinen den startes fra.

 

Har du derimot bruker og passord skal du kunne aksessere stier i nettet ved å logge på med bruker og passord via kode. Mulig det finnes noe nyere .Net som gjør det enklere men av eldre .Net kan dette gjøres med litt DllImport:

 

http://www.techtalkz.com/c-c-sharp/115668-accessing-unc-file-share-credentials.html

Lenke til kommentar

Vel, svaret er vel relativt enkelt:

Gitt at du har et share på en maskin. Dette sharet har du attestert til Per og Kari. Så kommer programmet ditt og sier: Jeg vil lese det sharet og jeg heter Administrator......

 

Husk at Administrator kunn er en vanlig bruker. Ikke noe mer. At Administrator rtilfeldigvis er medlem av Administrators er en helt annen sak, men endrer ikke det faktum at sharet kunn fortsatt er attestert til Per og Kari.

 

Med andre ord:

1. Administrator kan kunn logge på shares som også er attestert til Administrator eller de grupper som administrator er medlem av

2. Det at man er logget på som administrator gir kunn tillgang til systemets indre "tjenester" fordi disse er attestert til administratorer

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...