I was making a installer for some program I made, and I was wondering if I could copy the folder with the contents from the Current Users desktop to another area, how would I do so?Im using: My.Computer.FileSystem.MoveFile("", "")
Move the folder "Emailer" (on the desktop) to System files (x86)
To acces path to the desktop use:
Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
After you've obtained the desktop location (as Garath has pointed out in his answer), check out File.Move in the System.IO namespace. e.g
File.Move(path, path2);
http://msdn.microsoft.com/en-us/library/system.io.file.move.aspx
Related
Recently I made an application that has lots of PDF files in it and I made a setup for it using Inno Setup Compiler. In the setup, I allowed people to change where they want to install the app. For opening my PDF files, I used: system.diagnostics.process.start("My pdf.pdf")
My problem is that in the code above, I put drive "C:" and when my user changed the install directory to drive "D:" the pdf's did not work and the error showed that "Cannot find the specific file". My question is that is there a way to just put the name of "computer" or "a drive" in the code above, not the specific name of the pdf, and let the computer find the file itself?
You seem to be asking for an opposite of what you actually want to achieve.
I assume you are installing files with known names. What you do not know is the directory of the files.
From your description I assume that your actual code is like:
System.Diagnostics.Process.Start("C:\My pdf.pdf")
But when the user chooses a different location (directory) for your application, the above code with a hard-coded absolute path fails.
If your application installs to the same directory as the PDFs, just use a relative path (in this case just a file name without any path). It makes an operating system look to the current working directory, which will typically be an application directory.
System.Diagnostics.Process.Start("My pdf.pdf")
Or to make it more reliable, make it explicitly look to the application directory. For that use Application.StartupPath:
System.Diagnostics.Process.Start(
System.IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "My pdf.pdf"))
See also Get program path in VB.NET?
My requirement is, for each user uses my application there will be set of files created for the user. I am looking for right folder in Mac (Similar to C:\Windows\Temp in windows)
Condition:
Folder should be accessible to all users.
Content should not be deleted after logoff.
Folder should not be GUID based like echo $TMPDIR. Path should be static irrespective of user.
Any logged in user should be able to create directory there (even non admin
users).
If you know specific directory, please let me know how do we get this path programetically in objective C.
You can try NSApplicationSupportDirectory or NSCachesDirectory
NSString *downloadPath = [[NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:#"MyApp"];
You are probably looking for the "Shared" folder which is located in /Users.
"The Shared folder is located in the Users folder on your hard disk, with your home folder and the home folders of any other people who have accounts on your Mac. You can use the Shared folder to share files with other users on your Mac. The Shared folder is set up so that all users on your Mac can open files in the folder and copy files to it."
This is not a "temporary" folder, whose content will eventually be deleted by the system!
See also: OS X Mavericks: What are the Shared and Public folders?
Unfortunately, there is no corresponding NSSearchPathDirectory constant which would return the path via NSFileManagers method URLsForDirectory:inDomains:.
See also: URLsForDirectory:inDomains:
I have added some files that I need to be downloaded to the Application start up path. So I set Build Action as content now the files have been copied some where
C:\Documents and Settings\TestUser.ANNAM\Local Settings\Apps\2.0\Data\HVDRBMY5.8AA\858AT9VM.TNP\test..tion_2d7cfc137d9c2c74_0001.0013_432bd4561850d290\Data
How can access file from the application. My problem since it is a dynamic path will it be same folder count so that we can use like ..\..\Data\ Some think like this
Application.UserAppDataPath gets the path for the application data of a user.
Application.StartupPath gives you the path for the executable file that started the application, not including the executable name.
Starting with one of these, you should be able to use System.IO to manipulate the paths until you get the folder where your data files are.
I have a VB program that creates a temporay PDF file then opens Outlook and attaches the file. I create the file in the application path (the location that the program is running from - normally C:\Program Files\ProgamName). This works fine in XP as it appears there are no crazy permission issues. However in Windows 7, the file does not appear. There are no errors, the file does not exist in that location.
I've changed the path to the root of C:\, however this doesn't work either. I suspect it's something to do with W7 virtualisation, so the question is where can I create a file that I can then access again?
I was trying to avoid creating it on a share on a server, but it's looking like this is the only place to put it as there doesn't seem to be many places a user can write files to in Windows 7.
Surely there must be a location that users can access (without being administrators) to create files. Don't even get me started on the fun I have had with the registry in W7!!!
Thanks
Patrick
You need to create the file in the system's temp directory, which you can find by calling Path.GetTempPath().
In general, your program should only write to files in the user's Application Data (or temp) directories and only write registry keys in HKEY_CURRENT_USER. (This is true in any version of Windows)
If you follow these guidelines, you won't have any trouble in Windwos VIsta or 7.
You should never write information to places that are shared by multiple users.
Edit: While the following will work, SLaks points out it's bad practice, and the temp file won't get cleaned up.
Try %HOMEPATH% - this is the environment variable for a users documents folder, and should work no matter which version if windows you use.
In other words where you used to have:
"c:\programfiles\programname\tempFileName"
use:
"%HOMEPATH%\tempFileName"
How do you register a name for a program in the windows run dialog?
For instance typing in "notepad" and pressing enter runs notpad.exe
"photoshop" in my case runs Photoshop CS3
I'm using vb2005.net
Besides the system path, there's also the App Paths in the registry. Visual Studio, for example, doesn't have its main app (devenv.exe) in the PATH, but you can still launch it from the Run dialog.
Available names are enumerated under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths, with corresponding launch paths as values under each name.
See http://www.tweakxp.com/article36684.aspx for an example of how to add an exe to your App Paths.
This works because those applications have added the directory containing their executable to Window's PATH variable. This variable is used to resolve the locations of any files entered into the run dialog (among other things).
Please see How to set the path in Windows 2000 / Windows XP.
There is no registration, your program .bat, .exe must be within the system path.
If you right-click on "My Computer" ->"Properties"-> "Advanced" then go to the "System Variable". You can edit the "Path" variable to include the location of your executable.
This has nothing to do with "registering" a program. Windows uses the current value of your PATH environment variable, and any executables found in those directories can be executed by simply typing the name into the Windows "Run" box (or command prompt, or anything else that launches executables).
Some programs add their directories to the PATH, others drop an executable (or even a batch file) into a well-known directory that is already part of the PATH, such as the Windows directory.
Add the program's path to your PATH variable.
If you want to do it programmaticly, you can edit (append, not just set) this registry location (in, say, your installer):
HLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path