12

「すべてのユーザー」スタートアップメニューにプログラムでアクセスする方法を知っている人はいますか?

XP では、次の場所にあります。

C:\Documents and Settings\All Users\Start Menu\Programs\Startup

Windows 7 では、次の場所にあります。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

具体的には、セットアップと展開のプロジェクトがあり、すべてのユーザーのスタートアップ メニューにアプリケーションへのショートカットを配置して、誰もがログインするたびにアプリケーションが起動されるようにしたいと考えています。

編集:これがブライアンが答えを得た場所であると確信しています。

4

6 に答える 6

21

.NET 4ではenumCommonStartMenuに追加されたため、次を使用できます。Environment.SpecialFolder

Environment.GetFolderPath(Environment.SpecialFolder.CommonStartMenu)
于 2012-03-30T06:19:22.170 に答える
18

すべてのユーザーのスタートメニューの通常の方法に定義された定数はありませんEnvironment.GetFolderPathが、Win32APIを使用してこの方法で行うことができますSHGetSpecialFolderPath

class Program
{
    [DllImport("shell32.dll")]
    static extern bool SHGetSpecialFolderPath(IntPtr hwndOwner,
       [Out] StringBuilder lpszPath, int nFolder, bool fCreate);
    const int CSIDL_COMMON_STARTMENU = 0x16;  // All Users\Start Menu

    static void Main(string[] args)
    {
        StringBuilder path = new StringBuilder(260);
        SHGetSpecialFolderPath(IntPtr.Zero, path, CSIDL_COMMON_STARTMENU, false);
        string s = path.ToString();
    }
}
于 2010-02-24T21:29:42.980 に答える
4

「すべてのユーザー」は、ALLUSERSPROFILE環境変数に存在します。

C:\>dir "%ALLUSERSPROFILE%\Start Menu"
 Volume in drive C is awesome
 Volume Serial Number is 8C57-DB1A

 Directory of C:\Documents and Settings\All Users\Start Menu

12/28/2009  10:27 PM    <DIR>          .
12/28/2009  10:27 PM    <DIR>          ..
12/28/2009  10:01 PM             1,566 Microsoft Update.lnk
02/23/2010  09:57 PM    <DIR>          Programs
12/28/2009  10:27 PM             1,563 Set Program Access and Defaults.lnk
12/28/2009  08:51 PM               398 Windows Catalog.lnk
12/28/2009  08:51 PM             1,507 Windows Update.lnk
               4 File(s)          5,034 bytes
               3 Dir(s)  64,214,460,416 bytes free
于 2010-02-24T21:29:10.500 に答える
4

あなたも試すことができます!

string allUsers=Environment.GetEnvironmentVariable("ALLUSERSPROFILE")+ "\\Start Menu\\Programs";
于 2011-09-25T16:45:00.393 に答える
2

適切な MSI プロパティを使用して、スタートアップ フォルダーにアクセスできます (詳細については、こちらを参照してください)。[StartupFolder]

ただし、一般的なユーザー依存の MSI 変数として、このプロパティは、ALLUSERS プロパティの値に応じて、ユーザーのスタートアップ フォルダーまたはすべてのユーザーのスタートアップ フォルダーのいずれかを指します。

これは、「Everyone」(マシンごと) にインストールすると、フォルダーを取得することを意味します。

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\

それ以外の場合は、ユーザーのプロファイル内のユーザーごとのフォルダーになります。これは仕様によるものであり、ユーザーごとのインストールではすべてのユーザー フォルダーへの書き込み権限がないため、当然のことです。

Setup and Deploymentプロジェクトで、次の手順を実行して、ファイルをスタートアップ フォルダーに配置します。

  • ファイル システムビューを開き、
  • フォルダ ツリーを右クリックし、カスタム フォルダを追加します。
  • このフォルダーのプロパティで、DefaultLocationを次のように設定します。[StartupFolder]
  • コンテンツをカスタム フォルダーに追加する
于 2010-02-24T22:11:54.677 に答える