77

I am a Linux guy and as such I am very lost when I try and do anything is Windows. I am trying to create the following link:

mklink /d C:\backup\data \\myth\backup\data

But I do not have sufficient privilege to preform this operation. How do I get sufficient privileges in Windows 7?

UPDATE:

Right clicked on C:\backup\data and changed the permissions to full access for authenticated user, restarted the machine and tried the command again with no luck. Anyone have any further suggestions?

1
  • Make sure c:\backup\data doesn't already exist when you are trying to create the link as administrator. Apr 8, 2011 at 18:52

7 Answers 7

129
+100

As stated here,

Creation of symbolic links requires the SeCreateSymbolicLinkPrivilege (“Create symbolic links”), which is granted only to administrators by default (but you can change that using security policy).

To change the policies:

  1. Right click on StartRun and launch secpol.msc.

  2. Open Security Settings → Local Policies → User Rights Assignment and select Create symbolic links (that represents SeCreateSymbolicLinkPrivilege).

enter image description here

  1. Double-click on the item and add yourself (or the whole Users group) to the list.

The changes will apply when you log out and log in again.

9
  • 2
    Note that on Win7, the 'Users' group wasn't visible for me until, from the dialog "Select Users or Groups", I clicked the "Object Types" button and added 'groups'. Jan 8, 2012 at 18:19
  • 10
    This doesn't work for me, regardless of whether I add my user, "Users", or "Everyone". I logged out, and I rebooted, but in my home dir, the command "mklink /D docs Dropbox" still gives me "You do not have sufficient privilege to perform this operation." Same result if I try on files instead of directories. Jan 8, 2012 at 18:19
  • 4
    My problem solved by Brandon Donnelson's answer: In addition to the above, the user running "mklink" cannot be an administrator. Jan 8, 2012 at 18:42
  • @Jonathan. didn't work for me. And it seems silly, or maybe I'm misunderstanding. Windows 7 doesn't allow an administrator to create symbolic links, but only non-administrators after an administrator gives them privledges???
    – Ben
    Mar 19, 2012 at 13:26
  • 4
    @Ben I agree it seems barmy. On reflection though, I think I solved my problem by running the 'cmd' window by right clicking and choosing 'run as admin'. Someone explained to me that when launching a process, Windows strips admin privs from it, unless you choose 'run as admin'. At that point, if you are not an admin, you have to enter an admin password. If you are already admin, then you don't have to enter anything. Perhaps that allowed me to run 'mklink' from within the cmd window. Mar 19, 2012 at 23:17
22

I just discovered that I can create a 'Junction' even when I can't create a symlink:

mklink [/D] /J junctionname filename

where /J indicates 'create a junction', and the /D is, I believe, for if the named file is a directory. (my user is currently an administrator)

However, a junction to a 'bat' file doesn't seem to be executable, so this isn't actually any use.

Does anyone understand why this is, or how it can be fixed to provide an alternative approach to the OP's problem?

2
  • 12
    You can create a hardlink (mklink /H) without admin privileges, and that will be executable. Hardlinks are for files, junctions are for directories, symlinks are for both (and /D is used to indicate that a symlink is for a directory).
    – Brilliand
    Jan 3, 2013 at 20:49
  • 6
    Junctions and hardlinks are both useless for the example in the OP, though, because neither of them can point to a network drive (hardlinks are limited to same partition, junctions are limited to local drives); only a symlink or Windows shortcut can do that.
    – Brilliand
    Jan 3, 2013 at 21:29
14

I found only a non administrator can do it. Add non administrator to create symbolic links and runas non administrator. You'll have to add a person of with non admin privileges. Then you give permission to the target for the non admin, so he can do the runas mklink.

3
  • 2
    This totally solved my problem: My user is an adminstrator, but "mklink" would not work until I enabled the "guest" account, call "runas /user:guest cmd" and then run mklink from that new cmd session. It also required temporarily granting perms so that the guest account could cd into and modify my home directory, where I wanted the symlink, which causes a flurry of error dialogs, but they seemed harmles. Jan 8, 2012 at 18:41
  • For the record, "mklink" doesn't work for my regular user which is an administrator, but does work either when launched from a cmd which has been "runas /user:guest cmd" (I couldn't figure out the quoting required to directly run the mklink command as user guest) or when I remove my own account from the 'administrators' group. Jan 10, 2012 at 0:49
  • 4
    It also worth noting that it is possible to run mklink successfully with an account that has admin rights. But that requires UAC to be turned off. Aug 14, 2013 at 21:47
4

The above solutions didn't work for me because not only could I not create a "guest" user on my machine, I can't possibly ask all the users of my tools to do so too on their machines. Nor is it reasonable to require they use Administrator consoles.

My solution is to use: elevate.cmd and elevate.vbs

  1. Download from: http://technet.microsoft.com/en-us/magazine/2008.06.elevation.aspx
  2. Put those two files on your system path (or somewhere convenient on the network)
  3. elevate.cmd cmd /c "cd /d LINK_DIR && mklink /D LINK_NAME LINK_TARGET_PATH"

Cons: elevate.cmd returns immediately but answering the UAC dialog takes time. This forced me to add a "did you ok the UAC dialog yet?" question to my script. It is possible to skip "elevate.cmd" by checking the exit code for the following command: whoami /groups | find "S-1-16-12288" (exit code 0 means you have an Adminstrator console).

2

Came across this problem today as well. I had a NAnt build task trying to create symbolic links on a computer. Was getting rejected for lack of privileges. I found this post which helped solve my problem: http://josh.mainelan.net/tag/mklink/.

The relevant section:

  1. Bring up your run box, type “secpol.msc” and click OK.
  2. Navigate under the Security Settings \ Local Policies \ User Rights Assignment folder.
  3. Find “Create symbolic links” and add the Users group to it.

I think you need to restart your computer or something after doing this.

1

Run the command prompt as administrator to execute this command.

Type cmd (or command) in the start menu and right click on it and choose "run as an administrator".

Now any command that you execute will be executed with administrator privileges.

2
  • As others have mentioned, SeCreateSymbolicLinkPrivilege is what is required. However, even if you are the administrator in Windows 7, most programs are not run with administrative privileges. To get administrative privileges for a program, follow the steps I mentioned above.
    – teknikqa
    Apr 3, 2010 at 23:49
  • I think he knows about running as administrator that's why he is asking the question
    – barlop
    Jan 21, 2018 at 9:45
-6

I'd recommend Ultimate Windows Tweaker. Use it to Select "Show Take Ownership" to get around the permissions issue, and "Show Open Command Window Here" to open command prompt at the correct folder.

alt text

4
  • Installed, opened explorer and right clicked on the folder to be linked and "took ownership" then opened command window from here. Ran the above mklink command and got the same error again.
    – stephenmm
    Mar 28, 2010 at 3:14
  • Aw well, worth a try. As a recent Windows -> Linux user, I can sympathize fully about things not working and not knowing why. Good luck. Mar 28, 2010 at 6:38
  • 7
    Ironically enough, neither taking ownership nor Show Command prompt gives you admin privileges. Just like in Linux.
    – surfasb
    Jul 6, 2011 at 22:22
  • 2
    -1 Try trying it yourself before posting it then you'd see it doesn't work
    – barlop
    Jan 21, 2018 at 9:46

Not the answer you're looking for? Browse other questions tagged .