"net use" - Befehl in einem Windows-Dienst
Verwenden wir die folgende Befehlszeile aus, in einer Windows-Dienst entwickelt mit C# .Net Framework 1.1:
net use z: \\myComputer\c$
Den Dienst unter einem Domänenkonto, ein lokaler administrator auf "myComputer". Nach dem Debuggen den code können wir sehen, dass es nicht wieder irgendwelche Fehler, aber das "z:" - Laufwerk ist nie abgebildet. Wir haben versucht, die genauen denselben code von einer Konsole-Anwendung, und es funktioniert einwandfrei. Was ist es, was wir brauchen, um hinzuzufügen, um den Service, diese Arbeit zu machen?
Den code den wir benutzen ist unten enthalten.
Grüße,
Sergio
startInfo.FileName = "net";
startInfo.Arguments = string.Format(@"use {0}: \\{1}\{2}", driveLetter,
computerName, folder).Trim();
startInfo.UseShellExecute = false;
startInfo.RedirectStandardError = true;
proc.EnableRaisingEvents = false;
proc.StartInfo = startInfo;
proc.Start();
//If there is an error during the mapping of the drive, it will be read
//from the StandardError property which is a StreamReader object and
//be fed into the error output parameter.
using(StreamReader errorReader = proc.StandardError)
{
string standardError = string.Empty;
while((standardError = errorReader.ReadLine()) != null)
{
error += standardError + " ";
}
}
proc.WaitForExit();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vom http://msdn.microsoft.com/en-us/library/ms685143.aspx:
Können Sie Zugriff auf die user-Eigenschaften eines windows-Dienstes (einschließlich der HKEY-CURRENT-USER aus der registry), da der Dienst nicht ausgeführt, wie ein Benutzer eingeloggt ist.
Zugeordnete Laufwerke sind Teil des user-Einstellungen, so dass Sie nicht verwenden Sie Sie als einen Dienst, wenn Sie Graben, finden Sie die Eigenschaften eines Benutzers in der registry manuell, anzeigen der Laufwerke in Ihrem service, etc. Es ist ein Schmerz.
Was möchten Sie vielleicht zu versuchen und tun ist stellen Sie eine Frage über wie Ihre Service-ausführen der login-Sequenz (wahrscheinlich einige .EXE-Datei). Das kann es für Sie tun.
Hoffe, das hilft,
Alan.
Müssen Sie wahrscheinlich geben Sie das Konto für die Anmeldung. Geben Sie
net use /?
auf eine Eingabeaufforderung, um Hilfe zu Holen-Einstellung, die mit dem Befehl.Ich vermute, dass es ist, weil der Dienst nicht ausgeführt wird, im Kontext des lokalen Benutzers. Soweit ich mich erinnere, können Sie konfigurieren einen windows-Dienst aus den Jahren vor 'mit dem desktop interagieren" oder etwas ähnliches.
War ich etwas ähnliches für die Anmeldung an einem remote-server, aber ohne das zugeordnete Laufwerk Teil. Ich weiß nicht, wie Netzlaufwerke werden; in Programmen, die ich verwenden subst für Bequemlichkeit die ganze Zeit.
Wie auch immer, ich musste einfach stellen Sie sicher, dass
oder was auch immer Ihr Benutzername/Passwort, die Zugriff auf den remote-server, dann ist es egal, was der Dienst angemeldet ist, als.