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
(entwickle in c# aber die klassen und funktionsweise sollte ja die gleiche sein)
Hat jemand eine Idee wie ich das lösen könnte?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 117034
Url: https://administrator.de/contentid/117034
Ausgedruckt am: 16.11.2024 um 05:11 Uhr
11 Kommentare
Neuester Kommentar
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")
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")
Hallo ReiniX,
versuche mal statt des Servernamen die IP-Adresse.
Grüße, Steffen
versuche mal statt des Servernamen die IP-Adresse.
Grüße, Steffen
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 /?
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 /?
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
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
Da hast du Recht, daran habe ich nicht gedacht. Allerdings gibt es Alternativen.
Meine Empfehlung wäre die GUI-Version.
Meine Empfehlung wäre die GUI-Version.