2009-03-06 1 views
1

Ich habe einen Windows-Dienst, der mit dem Visual Studio (2008) -Installationsprogramm installiert wird. Ich wollte es vermeiden, als System zu laufen, also habe ich manuell 1) ein neues Windows-Konto auf dem Computer erstellt und 2) während der Installation den Computernamen \ Benutzername und das Passwort eingegeben.Automatisch neuen Benutzer erstellen und automatisch für die Installation des Windows-Dienstes mit Visual Studio Installer verwenden

Ich möchte, dass dies wenig Benutzereingriff erfordert, so dass ich daran interessiert bin, einen neuen Windows-Benutzer zu erstellen und den Computernamen, den Benutzernamen und das Kennwort automatisch anzugeben.

Wie würde ich das erreichen?

Antwort

-2

Ich denke, dies wird die Sicherheit des Benutzers gefährden und wenn die Dienstanwendung dies tun darf, ist es auch eine schlechte Praxis. Es wird auch die aktuellen Sicherheitsinformationen brechen.

Soweit ich weiß, führt jede Art von Windows-Dienst eine Aufgabe, die Hintergrund-Aufgabe sein soll und es läuft immer im Hintergrund. Und es wird immer mit dieser Absicht erstellt: Hintergrundtask wird ausgeführt und es wird immer ausgeführt, daher sind alle Arten von gefährlichen Aktionen erforderlich, die eine Benutzerberechtigung erfordern (d. H. Der Benutzer muss sich darüber im Klaren sein), wie das Erstellen eines neuen Benutzers.

Wenn ich mich nicht irre, dann wird Ihre Dienstanwendung auf jeden Fall immer neue Benutzer ohne jede Benachrichtigung erstellen, da der Windows-Dienst immer im Hintergrund ausgeführt wird und keine Benutzeroberfläche hat. Daher wird es auf der Wartbarkeitsseite der Anwendung ebenfalls nicht empfohlen. Ganz zu schweigen von Debugging Windows-Service ist ziemlich schwer für viele von uns.

+0

Ich frage nicht, für meinen Dienst ständig Benutzerkonten erstellen - ich frage, wie ein Benutzerkonto * für * meinen Dienst bei der Installation zu erstellen. Ein Teil meines Ziels ist eine bessere Sicherheit, da ich einen Benutzer mit eingeschränkteren Berechtigungen als der Superuser erstellen kann. – pc1oad1etter

+0

Oh, das hast du auf deiner ersten Frage nicht gesagt. Es ist ziemlich einfach, nur benutzerdefinierte Aktionen auf Ihrer MSI-Installation zu erstellen, und Sie sind fertig. Sie können viele Beispiele auf MSDN finden. –

+0

Wie wird diese * aktuelle * Sicherheitsnachweise brechen? Diese Aussage macht wenig Sinn. Er erstellt im Wesentlichen ein Dienstkonto. Dies ist nicht ungewöhnlich und kann gesichert werden. Es bedeutet nicht, dass es mit dem Desktop interagieren kann, nur dass es mit einem anderen Satz von Rechten/Anmeldeinformationen ausgeführt wird. – Mick

0

Erstellen Sie eine benutzerdefinierte Aktion in Ihrem MSI, um den Befehl "sc.exe" auszuführen (der auf WinXP und neueren Systemen installiert ist). Wenn Sie der Ansicht sind, dass sc.exe möglicherweise nicht auf dem System vorhanden ist, fügen Sie es in Ihr MSI ein, entweder in die Binär-Tabelle, oder installieren Sie es mit dem Produkt.

nach dem MSI erstellt den Dienst, haben die benutzerdefinierte Aktion ausführen, um die folgende (ändern für Ihren eigenen Benutzer/Pass):

sc config-the_service_name obj = dieDomäne \ johndoe password = Stackoverflow

beachten Sie jedoch, dass das Passwort direkt in der MSI im Klartext zu speichern ist eine sehr schlechte Idee.

Eine einfache (und grundlegende) Lösung ist die Verwendung des free tool CPAU, um den gesamten sc-Befehl oben zu verschlüsseln. Sie würden diesen Befehl (mit CPAU) von Ihrem eigenen System verschlüsseln und dann diese codierte Zeichenfolge an CPAU übergeben (die Sie in Ihrer benutzerdefinierten Aktion in Ihr MSI aufnehmen oder auf dem System installieren müssten). CPAU decodiert die übergebene Zeichenfolge, die den obigen sc-Befehl dekodiert, und setzt den Benutzernamen und das Kennwort für den Dienst sicherer.

+0

Mick, Wenn ich Sie richtig lese - Sie beschreiben immer noch keine Möglichkeit, einen neuen Benutzer zu erstellen - einfach, wie Sie (sicherer) einen Benutzernamen und ein Passwort zuweisen, um den Dienst zu starten, richtig? – pc1oad1etter

+0

auch Der processInstaller in Visual Studio * erlaubt * Ihnen, einen Benutzernamen und ein Passwort für die Installation zu setzen - wäre dies das Äquivalent (sicherheitsgemäß), dass das sc-Dienstprogramm den Dienst konfiguriert (in Klartext) oder VS das besser handhabt ? – pc1oad1etter

+0

Wahr, ich werde einen neuen Kommentar mit einer Möglichkeit hinzufügen, dies zu tun. – Mick

2

Taken from this website

Die einfache Antwort ist die Netto- Benutzer verwenden/add (/ Domain), jedoch ist es möglich, automatisiert nicht nur die Zugabe des Benutzers, sondern auch seine/ihre Zusätzlich zu Gruppen und die Erstellung einer Vorlage Benutzerkonto Verzeichnisstruktur.Viele Organisationen haben eine grundlegende Struktur mit Word, Excel-Verzeichnisse und einige Vorlagendateien. Dies kann mit einem einfachen Skript automatisiert werden. Zum Beispiel

REM addnew.bat 

net user %1 password /add /homedir:\\<server>\users\%1 /scriptpath:login.bat /domain 
net localgroup "<local group>" %1 /add 

REM repeat for local groups 
net group "<groups>" %1 /add /domain 

REM repeat for global groups 
xcopy \\<server>\users\template \\<server>\users\%1 /e 
nltest /sync /server:BDCname 

REM repeat for all BDCs you might be authenticating to 
sleep 20 
cacls \\<server>\users\%1 /e /r Everyone 

REM remove the everyone permission to the directory 
cacls \\<server>\users\%1 /g %1:F /e 
cacls \\<server>\users\%1 /g Administrators:F /e 
Verwandte Themen