Programmgesteuerten Zugriff auf Alle Benutzer-Startmenü
Weiß jemand, wie man den programmgesteuerten Zugriff auf die "Alle Benutzer" - Autostart-Menü?
In XP befinden sich hier:
C:\Documents and Settings\All Users\Start Menu\Programs\Startup
Und in Windows 7 befinden sich hier:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
Speziell ist, habe ich eine Setup-und Bereitstellungsprojekt, und ich möchte eine Verknüpfung der Anwendung im Startmenü für alle Benutzer, so dass die Anwendung starten, wenn sich jemand anmeldet.
EDIT: Ich bin mir ziemlich sicher, dass dies ist, wo Brian hat seine Antwort bekommen.
InformationsquelleAutor der Frage fre0n | 2010-02-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Konstante definiert, die für den normalen Weg von
Environment.GetFolderPath
für die im Startmenü für alle Benutzer, aber Sie können es auf diese Weise mittels der Win32-APISHGetSpecialFolderPath
:InformationsquelleAutor der Antwort Brian R. Bondy
In .NET 4
CommonStartMenu
wurde Hinzugefügt, um die- Umgebung.SpecialFolder
- enumso können Sie verwenden:InformationsquelleAutor der Antwort mike z
"Alle Benutzer" befindet, in die Umgebungsvariable ALLUSERSPROFILE:
InformationsquelleAutor der Antwort Seth
Können Sie auch versuchen!
InformationsquelleAutor der Antwort Humble Coder
Können Sie auf die Start Ordner mit der entsprechenden MSI-Eigenschaft (siehe hier für mehr details):
[StartupFolder
]Jedoch als typisch für Anwender-abhängigen MSI-Variablen, die diese Eigenschaft verweist, die entweder der user-startup-Ordner "oder" alle Benutzer " - Autostart-Ordner, je nach dem Wert der Eigenschaft ALLUSERS.
Dies bedeutet, dass bei der Installation für "Alle" (pro Maschine), erhalten Sie die Ordner
sonst werden Sie den pro-Benutzer-Ordner im Profil des Benutzers. Dies ist beabsichtigt und macht auch Sinn, da eine installation pro Benutzer nicht über die Berechtigung zum schreiben auf den Ordner all users.
In Ihrem Setup und Bereitstellung Projekt, gehen Sie zum einfügen von Dateien in den Autostart-Ordner:
[StartupFolder]
InformationsquelleAutor der Antwort Dirk Vollmar
Vom C++, da zum Zeitpunkt der Erstellung dieses empfiehlt Microsoft die Verwendung
SHGetKnownFolderPath
mit dem gewünschten Wert desKNOWNFOLDERID
enum. Der Wert, den Sie verwenden müssen, istFOLDERID_CommonStartMenu
. In Ihrem Fall würde der code so Aussehen:Referenz
SHGetKnownFolderPath
ist es:https://msdn.microsoft.com/en-us/library/windows/desktop/bb762188(v=vs. 85).aspx
Referenz über alle verfügbaren Werte von enum -
KNOWNFOLDERID
ist es:https://msdn.microsoft.com/en-us/library/windows/desktop/dd378457(v=vs. 85).aspx
Info, dass der aufrufende Prozess ist verantwortlich für das freigeben von Ressourcen, finden Sie in der Dokumentation von
SHGetKnownFolderPath
im Teil DokumentationppszPath
parameter.Bitte beachten Sie, dass, wenn es ausgeführt wird, von service, einige Werte sind nicht verfügbar (zum Beispiel in Verbindung mit Daten des Nutzers, f.ex.
FOLDERID_Documents
). Außerdem, wenn einige Werte nicht zur Verfügung, wenn Sie anderen Architektur (f.ex. Wert bezogen aufFOLDERID_ProgramFilesX64
ist nicht auf 32-bit-Betriebssystem).Wenn jemand bereit ist, zu wissen, wo Microsoft empfiehlt die Verwendung
SHGetKnownFolderPath
anstelle von anderen verfügbaren Funktionen, Lesen Sie bitte oben auf die Dokumentation veraltetSHGetFolderPath
.InformationsquelleAutor der Antwort apanas