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-Key: 117034

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

Printed on: April 25, 2024 at 03:04 o'clock

Member: ottscho
ottscho May 28, 2009 at 12:24:15 (UTC)
Goto Top
Bei deinem Code kann ich dir leider nicht weiterhelfen. Aber warum benutzt du keine normalen Freigaben in Verbindung mit Loginscripte?
Member: jadefalke
jadefalke May 28, 2009 at 13:54:05 (UTC)
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")
Mitglied: 51705
51705 May 28, 2009 at 18:06:57 (UTC)
Goto Top
Hallo ReiniX,

versuche mal statt des Servernamen die IP-Adresse.

Grüße, Steffen
Member: DerWoWusste
DerWoWusste May 28, 2009 at 21:20:47 (UTC)
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.
Member: ReiniX
ReiniX May 29, 2009 at 04:58:42 (UTC)
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
Mitglied: 78632
78632 May 29, 2009 at 08:38:05 (UTC)
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 /?
Mitglied: 51705
51705 May 29, 2009 at 09:02:59 (UTC)
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
Member: DerWoWusste
DerWoWusste May 29, 2009 at 09:17:45 (UTC)
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.
Member: ReiniX
ReiniX May 29, 2009 at 10:26:58 (UTC)
Goto Top
Runas kann man per script kein Passwort übergeben!
Mitglied: 78632
78632 May 29, 2009 at 10:30:31 (UTC)
Goto Top
Da hast du Recht, daran habe ich nicht gedacht. Allerdings gibt es Alternativen. face-wink

Meine Empfehlung wäre die GUI-Version.
Member: ReiniX
ReiniX Jun 02, 2009 at 10:42:49 (UTC)
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...