reinix
Goto Top

Netzlaufwerk als anderer Benutzer verbinden und benutzen

Hallo,

ich habe das Problem, dass unter Windows Netzlaufwerke per user gemaped werden.
Das heißt wenn ich es als user A verbinde, ist es für user B nicht verfügbar.

Ich habe eine Anwendung, die als Administrator ausgeführt werden muss aber vom Benutzer gestartet werden soll.

Nun dachte ich mir ok ... erstelle ich ein Process objekt. Gebe dem Benutzername und Passwort, mappe das laufwerk und führe danach mein programm aus.
Pustekuchen!
Irgendwie ist das Laufwerk nach dem 1. WaitForExit schon nicht mehr verfügbar

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Globalization;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string args)
        {
            Process P = new Process();
            //P.StartInfo.RedirectStandardOutput = true;
            P.StartInfo.UseShellExecute = false;
            P.StartInfo.LoadUserProfile = true;
            P.StartInfo.UserName = "Administrator";  
            P.StartInfo.Domain = "RECHNERNAME";  
            System.Security.SecureString password = new System.Security.SecureString();
            string pw = "MeinPasswort";  
            foreach (char c in pw)
                password.AppendChar(c);
            P.StartInfo.Password = password;

            //Net Use
            P.StartInfo.FileName = Environment.SystemDirectory + "\\cmd.exe";  
            P.StartInfo.Arguments = "/k net use y: \\\\SR1NV99\\d$\\DSL-Snapshots ADMINPASSWORT /USER:SR1NV99\\Administrator /PERSISTENT:yes";  
            Console.WriteLine(P.StartInfo.Arguments);
            P.Start();
            //Console.WriteLine(P.StandardOutput.ReadToEnd());
            P.WaitForExit();

            //Check
            //Console.WriteLine(Directory.Exists("Y:\\")); 

            //Snapshot
            P.StartInfo.FileName = "C:\\Local\\csharpsnap\\snapshot.exe";  
            P.StartInfo.Arguments = "C: Y:\\test.sna";  
            Console.WriteLine(P.StartInfo.Arguments);
            P.Start();
            //Console.WriteLine(P.StandardOutput.ReadToEnd());
            P.WaitForExit();

            //Net Use Del
            //P.StartInfo.FileName = Environment.SystemDirectory + "\\cmd.exe"; 
            //P.StartInfo.Arguments = "/k net use y: /del"; 
            //Console.WriteLine(P.StartInfo.Arguments);
            //P.Start();
            ////Console.WriteLine(P.StandardOutput.ReadToEnd());
            //P.WaitForExit();

            Console.ReadLine();

        }
    }
}

(entwickle in c# aber die klassen und funktionsweise sollte ja die gleiche sein)

Hat jemand eine Idee wie ich das lösen könnte?

Content-ID: 117034

Url: https://administrator.de/contentid/117034

Ausgedruckt am: 16.11.2024 um 05:11 Uhr

ottscho
ottscho 28.05.2009 um 14:24:15 Uhr
Goto Top
Bei deinem Code kann ich dir leider nicht weiterhelfen. Aber warum benutzt du keine normalen Freigaben in Verbindung mit Loginscripte?
jadefalke
jadefalke 28.05.2009 um 15:54:05 Uhr
Goto Top
Hallo,

mail eine Frage vorweg.
Benötigst du Hilfe weil deine Netzlaufwerke auf ein Windows System nicht gemappt werden, sprich der User kann nicht arbeiten weil er seine Laufwerke nicht hat, oder benötigst du Hilfe weil du gerade in C+ programmierst und du den net use Befehl gerne in dein Programm implementieren möchtest.

Denn falls du deine Netzlaufwerke wirklich mit einem selbstgeschreibenes Programm in C+ an den User weitergibst... hm ja, wer es kann, der kanns auch so machen, jedoch ist es so dass M$ schon sich darüber Gedanken gemacht und deren Möglichkeit sind doch recht in Ordnung.

Ansonsten denke ich, solltest du prüfen ob die Laufwerke die du an die User verbinden möchstest auch nach M$ Lehrbuch freigegeben sind.
Da du nicht spezifiziert hast was für ein Windows System das ist, gehe ich einfach davon aus dass die HDD´s NTFS partitioniert sind und dass du auch NTFS Berechtigung gesetzt hast.

Dürfen die User darauf zugreifen?
Gibt es eine User Begrenzung (im Reiter "Freigaben")
51705
51705 28.05.2009 um 20:06:57 Uhr
Goto Top
Hallo ReiniX,

versuche mal statt des Servernamen die IP-Adresse.

Grüße, Steffen
DerWoWusste
DerWoWusste 28.05.2009 um 23:20:47 Uhr
Goto Top
Ich habe eine Anwendung, die als Administrator ausgeführt werden muss aber vom Benutzer gestartet werden soll.
Beschreib die Anforderung näher, vielleicht ist dies ganz einfach zu lösen.
ReiniX
ReiniX 29.05.2009 um 06:58:42 Uhr
Goto Top
- Habe eine Hand voll Rechner, von denen ein Wöchentliches Image erstellt werden soll.
- Es gibt 2 Versionen von dem Image. Woche 1 und Woche 2.
- Das Image soll auf einem Netzlaufwerk abgelegt werden
- Für die Freigabe wird benutzername und passwort benötigt
- Es handelt sich um eine Arbeitsgruppe, keine Domäne
- Es muss sicher gestellt werden, dass das Image gemacht wird falls jemand den Computer verwendet
- Wake on Lan geht nicht, da der rechner mit PGP-Whole-Disk-Encryption verschlüsslt ist (fährt nicht hoch ohne passworeingabe - vergleichbar mit biospassort)
- Logonscript mag ich nicht, da das imagen doch beim arbeiten stört
- Geplante Tasks kann man leider nicht auf "Shutdown" oder "Logoff" triggern
- Einzige mötlichkeit ist da wie ich sehe das Logoffscript. Bei dem kann man aber leider nicht angeben, unter welchem benutzer es ausgeführt werden soll
- Das Tool mit dem ich sichere ist von drivesnapshot.com
- Das Tool startet nicht, wenn es keine administrativen rechte hat
78632
78632 29.05.2009 um 10:38:05 Uhr
Goto Top
Zum Starten einer Anwendung mit Adminrechten kannst du runas verwenden, auch im Logoffscript.

Einfacher wäre allerdings, du fährst den Rechner über einen Batch herunter, in dem du erst über runas deine Anwendung starten lässt, das Backup abwartest und anschließend den shutdown-Befehl ausführen lässt.

Hilfe mit runas /? und shutdown /?
51705
51705 29.05.2009 um 11:02:59 Uhr
Goto Top
Hallo,

das Problem ist doch, daß nicht zwei Verbindungen mit unterschiedlichen Credentials zum gleichen Server hergestellt werden können (daher der Tip mit der IP-Adresse).

Grüße, Steffen
DerWoWusste
DerWoWusste 29.05.2009 um 11:17:45 Uhr
Goto Top
Trifft sich gut. Genauso machen wir das auch mit drive snapshot. Lass Dir gesagt sein: es stört nicht im laufenden Betrieb, denn der geplante Task (so machen wir das) startet mit niedriger Priorität.
ReiniX
ReiniX 29.05.2009 um 12:26:58 Uhr
Goto Top
Runas kann man per script kein Passwort übergeben!
78632
78632 29.05.2009 um 12:30:31 Uhr
Goto Top
Da hast du Recht, daran habe ich nicht gedacht. Allerdings gibt es Alternativen. face-wink

Meine Empfehlung wäre die GUI-Version.
ReiniX
ReiniX 02.06.2009 um 12:42:49 Uhr
Goto Top
Meine Rechner sind nicht mehr die neusten - Snapshot merkt man doch seh stark wenn es am arbeiten ist.

Habe mir jetzt selbst eine RunAs alternative gebaut.
Scheint zu funktionieren...