2012-03-07 58 views
0

我想创建一个程序,用户必须从他/她的桌面运行.exe ...如果他们试图从其他地方运行它我想要.vbs弹出文件我创建的时候会告诉他们把它放在桌面上。我已经制作了这个程序并且工作正常,但是人们无法阅读说明,所以我认为这可能是一个好方法。 Unfortunatley,我遇到了麻烦,我无处可去。如果有人能帮助我,那将不胜感激。确定应用程序的家庭位置

+14

为什么你关心它在桌面上?也许你可以改为消除这种依赖关系。 – 2012-03-07 21:17:29

回答

7

我真的不明白为什么你要做到这一点,但你可以在主要检查是否该应用从桌面

static void Main() 
{ 

    var AsmPath =System.IO.Path.GetDirectoryName( 
    System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) ; 

    var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 

    if (AsmPath == desktopPath) 
    (
     MessageBox.Show ("You can only run this from the desktop"); 
     Application.Exit(); 
) 
    else 
     Application.Run(new Form1()); 
} 
+0

非常感谢!作品真棒! – Redman76 2012-03-07 21:51:14

1

如果你需要做的,从人的桌面的角度看东西(比如在哪里存储相对于桌面文件),你可以查询该位置,并将其用作任何后续工作的基础。

string UserDesktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
0

运行我与康拉德上不确定你为什么想这样做。但是,如果您正在讨论将exe放在桌面上并从那里执行(而不是快捷方式),那么您应该可以使用Assembly.GetExecutingAssembly()。位置并使用System.Environment将其与用户桌面位置进行比较。 GetFolderPath(Environment.SpecialFolder.Desktop)

+0

好的 - 康拉德击败了我! – 2012-03-07 21:28:34