2011-07-22 3 views
2

にEnvironment.SpecialFolder.Startupにファイルをコピーすることはできません。 は、私のアプリケーションは、私は、フォルダの起動にショートカットを置くことを決めたのWindowsスツルプ上で起動するようにするにはWPF

は、私が使用してみました:

File.Move(AppDomain.CurrentDomain.BaseDirectory + "ApplicationName.exe", Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk"); 

それは動作しますが、それは私が必要フォルダにない私のショートカットを移動します。

C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 

をしかし、私のショートカットは "後ろの" ちょうど1つのフォルダ

C:\Users\Germanov\AppData\Roaming\Microsoft\Windows\Start Menu\Programs 

に表示されます。

Environment.GetFolderPath(Environment.SpecialFolder.Startup) 

がうまく機能し、それが返されます。

File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "ApplicationName.lnk"); 

も「異常」です。実際にはこのファイルは削除されますが、「スタートアップ」フォルダには削​​除されません。私は手動で次のようにパスに「\スタートアップ」を追加しようとした場合

Environment.GetFolderPath(Environment.SpecialFolder.Startup) + @"Startup\ApplicationName.lnk" 

私はSystem.IO.Excseptionを取得します。

私は手動でこのパスを入力することはできませんが、私は、異なるバージョンのWindowsとのdiferentパソコンで動作するように自分のアプリケーションをneen。また、私のアプリケーションをWindowsのスタートアップで起動させるためにレジストリを使用することはできません。

私は、これはWPFプロジェクトで、.NET 4.0、Windows 7は、Visual Studioの2010を使用しています。

アイデア?

+0

郵便番号、あなたのショートカットを作成するためにしてください使用。 –

+0

私はここからそれを取った:http://stackoverflow.com/questions/234231/creating-application-shortcut-in-a-directory – Pavel

答えて

3

あなたは起動があなたの条件のために働いていない理由を私は知らないが、代わりにスタートアップのEnvironment.SpecialFolder.CommonStartupを試しました。ほとんどのインストーラパッケージがこれを行います。なぜ自分のためにこれをしたいのですか?レジストリを使用しない理由は何ですか?

あなたが「勝ったように、あなたはSystem.IO.Path.Combine()を使用する必要があります私は

var startup = Environment.GetFolderPath(Environment.SpecialFolder.CommonStartup); 
string file = Path.Combine(startup, "MyApp.lnk"); 
using (StreamWriter sw = new StreamWriter(file)) 
{ 
sw.WriteLine("Test"); 
} 

私のマシン上でこのコードを試してみましたが、その私のスタートアップ

enter image description here

+0

CommonStartupにも同じ問題があります。 C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programsにファイルをコピーします。 – Pavel

+0

変更された回答を確認してください。 – Anuraj

+0

CommonStartupにも同じ問題があります。 C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programsにファイルをコピーします。私はこれを手動で行い、ユーザにこの機能をスイッチオフする機会を与えたいと思います。レジストリを別のユーザーでブロックする可能性があるため、レジストリを使用したくありません。 – Pavel

2

に来てStartupApplication1.exeを作成します。バックスラッシュがないことに注意してください。

関連する問題