如何在管理员模式下打开文件进行编辑?


49

我将.config文件设置为在Notepad ++中打开。我编辑的文件通常位于受保护的位置(例如c:\ windows \,c:\ program文件等),因此需要管理员访问权限。

我希望能够双击.config文件,并以管理员权限打开Notepad ++。如果出现UAC提示就可以了。

有没有办法做到这一点?

Answers:


53

最好的方法是直接转到安装了Notepad ++的文件夹(32位Windows的程序文件和64位Windows的程序文件(x86)),在其中找到Notepad ++可执行文件,右键单击它,然后选择兼容性,然后在底部选中“以管理员身份运行”框。

这将使您的应用程序始终弹出UAC警告,但您始终可以以管理员身份进行编辑。

祝好运!

编辑:找到了本文,您可以在不启动UAC提示符的情况下创建快捷方式。从技术上讲,它适用于Windows 10,但在Win7 +上应以相同的方式工作。


2
我们可以通过复制Notepad ++ exe文件并仅将副本设置为以管理员身份运行来对此进行改进。这样,常规的notepad ++不会每次都提示您。
乔尔·科恩荷恩

8
@JoelCoehoorn这可以通过快捷方式而不是exe的完整副本来完成(转到快捷方式属性窗口选项卡Advanced...上的按钮Shortcut以启用它),这样,如果您更新notepad ++,它将同时更新您的非提升版和高架捷径。
Scott Chamberlain

就像superuser.com/a/1462628/193963一样,将两个快捷方式都放入了shell sendto菜单
Bernhard

19

我发现在“开始”菜单中搜索编辑器程序(例如Notepad ++),然后键入Ctrl+ Shift+ Enter可让您以管理员身份运行该程序。

然后,您应该能够打开和编辑需要提升特权的文件。


3
但是,这并不是一个真正的答案,因为它询问如何以提升的权限打开文件进行编辑。
Der Hochstapler,2012年

没错,您可以通过这种方式从编辑器中打开文件,而无需双击。
elolos 2012年

12

作为对@Askeli答案的改进,您可以首先制作notepad ++可执行文件的副本(将其命名为NotepadUAC之类)。然后,根据Askeli的建议,在副本属性中将兼容模式设置为要求管理员模式。现在,您还应该能够将.config文件设置为使用副本而不是原始文件打开。

这样做的好处是,在打开带有原始(默认)Notepad ++ .exe文件的文件时,您不会看到UAC提示。缺点是此副本不一定会以与原始副本相同的方式保持最新,并且最终可能会导致.dll或配置版本不匹配的问题。但是,如果发生这种情况,卸载/重新安装总是很容易的。


@akseli的建议有效,但是,我仍然看到UAC提示。无论如何,我可以忍受。
AngryHacker 2010年

10

我的解决方案是将Notepad ++固定到任务栏。当我需要它来编辑系统文件时,我右键单击它,单击“ Notepad ++”,然后单击“以管理员身份运行”。

如果您一直在编辑系统文件,则其他修改快捷方式或对其进行复制的解决方案都可以。我每天都使用Notepad ++,但是我每天都不会碰到受保护的文件。


6

当原始问题于2010年发布时,尚无此功能,但截至2012年- 最佳答案(至少在我看来是这样):

安装nppSaveAsAdmin:

http://sourceforge.net/projects/nppsaveasadmin

该插件允许您将任何文件保存为管理员。只需在Notepad ++中按“保存”,如果不允许您以用户身份更改此文件,Notepad ++会将其保存为管理员。支持Windows XP,Windows Vista,Windows 7,Windows 8。

可从Notepad ++插件管理器中快速轻松地安装“另存为管理员”插件。(插件/插件管理器/显示插件管理器/可用。选中“另存为管理员”,单击“安装”。)

Notepad ++将继续照常运行,而无需使用完整的管理UAC令牌运行。但是,如果Notepad ++看到您正在尝试保存一个文件,否则将不允许该文件访问NppAdminAccess.exe(显示UAC提示符)。只需单击“是”,您的文件将以管理权限保存。


2
  1. 将文本编辑器的.exe副本复制到同一程序文件文件夹中,并附加“ Admin”或类似名称。
  2. 右键单击新的exe->属性->兼容性->特权级别->选中“以管理员身份运行此程序”
  3. 在桌面/任务栏/开始菜单上创建此exe的快捷方式
  4. 将您要以管理员身份编辑的txt文件(或一个快捷方式)拖到该快捷方式中

这是我必须编辑主机文件以进行Web开发时发现的最简单/最灵活的方法。当然,如果您只想按照admin的要求以管理员身份打开一个扩展名的所有文件,则可以在创建的副本上使用“打开方式为...”->“选择默认程序”。


1

卸载插件(插件管理器除外)。这为我解决了问题。您可以一次安装一个插件,以查看哪个插件引起了问题。


1

以下解决方案实际上并不能实现双击方案,但可以为您提供选择的权力(从技术上来说,这也是两次单击):

您可以按文件类型(或按程序)向外壳上下文菜单添加“以管理员身份运行”菜单项。请参阅本文以获取有关注册表调整的详细信息。


1
@Ramhound您是否愿意检查链接的文章并重新考虑您的反对意见?或指出您指的是哪个答案?akseli的答案将始终触发UAC。Joel Coehoorn的答案需要.exe文件的副本(如他所说,该文件不会自动更新)。而且,它还将始终为特定文件类型触发UAC。Marlon的答案只是以admin身份启动程序,您仍然需要在Notepad ++中手动打开文件。而notepadpp研究对象的答案是脱离主题的AFAICT。
ctusch 2012年

1

最好的方法是将Notepad ++设置为以管理员身份运行。问题在于它破坏了右键单击选项。因此,我对右键单击选项进行了替换,以删除旧选项。我的修复程序的一个不错的部分是我将其添加到了注册表中的“目录”设置中。因此,现在您可以右键单击一个文件夹,然后选择“使用Notepad ++编辑”,它将在Notepad ++中打开所有文件:)。我做了很多VBScript编程。当我想出一种做某事或更改一个对象的新方法时,这使我很容易编辑所有文件进行全局更改。

我的VBScript在更改注册表项之前先对其进行备份。它没有将Notepad ++设置为管理员,因此您必须通过右键单击Notepad ++可执行文件并将其更改为以管理员身份运行来做到这一点。我开始研究如何使其以管理员身份运行。当我提出这个建议时,我将编辑我的帖子,以便您可以选择以“管理员”身份编辑或正常编辑。

'==========================================================================================
' NAME:   New-OpenWithNotepad++(WinVista7).vbs
' EDITED:  Kevin Dondrea , Gordos-Dondrea Enterprises and Foundation
' DATE  : 8/12/2012
' COMMENT: This script Exports Registry keys and replaced Notepad++ Right Click options.
'   Works with Windows Vista and 7.  Also works for restricted Win XP accounts.
' WEB LINK:  
'==========================================================================================

Option Explicit

' =============== START ADD ADMIN RIGHTS ===============
' This adds the Admin Run Function for Windows Vista and 7
' You must put this at the top below computer and End If at the
' very end of the script
If WScript.Arguments.length = 0 Then
Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "WScript.exe", """" & _
WScript.ScriptFullName & """" &_
" RunAsAdministrator", , "runas", 1
Else
' Do not forget to add End If at the end of the script
' =============== END ADD ADMIN RIGHTS ===============

On Error Resume Next

' =============== START CONSTANT VARIABLES ===============
Const HKEY_CLASSES_ROOT   = &H80000000
Const HKEY_CURRENT_USER   = &H80000001
Const HKEY_LOCAL_MACHINE  = &H80000002
Const HKEY_USERS          = &H80000003
' =============== END CONSTANT VARIABLES ===============

' =============== START DIM VARIABLES ===============
Dim objFSO, objWrite2File, objShell, objReg, objRegistry, objWshShell
Dim strDate, strTime, strTime2, strFileName, strOpenFile
Dim strComputer, strCommand, strHostName, strUserName
Dim intRC, strKeyPath, strValueName, strValue
' =============== END DIM VARIABLES ===============

' --------------------------------------------------------------------------

' =============== START COMPUTER NAME, TIME and DATE ===============
strComputer = "."

' Reads registry for Computer Name
Set objShell = CreateObject("WScript.Shell")
' Edit or Add with Registrry Object
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ 
strComputer & "\root\default:StdRegProv")

' Same as above but used only to delete registry key
Set objRegistry=GetObject("winmgmts:\\" & _ 
strComputer & "\root\default:StdRegProv")

strHostName = objShell.RegRead ("HKLM\SYSTEM\CurrentControlSet\Services\" & _
        "Tcpip\Parameters\Hostname")
strUserName = objShell.RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\" & _
        "CurrentVersion\Winlogon\DefaultUserName")

' Retreives Date and Time
strTime = Right("0" & Hour(now()), 2) & Right("00" & _ 
    Minute(Now()), 2) & Second(Now())
strTime2 = Right("0" & Hour(now()), 2) & ":" & Right("00" & ":" & _ 
    Minute(Now()), 2) & ":" & Second(Now())
strDate = Right("0" & Month(now()), 2) & "-" & Right("00" & _ 
    Day(Now()), 2) & "-" & Year(Now())
' -----------------------------------------------------------

' =============== START BACKUP OF REGISTRY KEYS USED FOR ===============

' Original Command
' strCommand = "regedit /e <FilePath> <RegKey>"

' Local Machine ......
strCommand = "regedit /e " & strHostName & "-" & strDate & "-" & _ 
strTime & "-BackupLM-Notepad++.reg " & _ 
"""HKEY_LOCAL_MACHINE\SOFTWARE\Classes" & _ 
"\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}"""

Set objWshShell = WScript.CreateObject("WScript.Shell")
intRC = objWshShell.Run(strCommand, 0, TRUE)
If intRC <> 0 then
 WScript.Echo "Error returned from exporting Registry: " & intRC
Else
 WScript.Echo "No errors returned from exporting the Registry file"
End If
' =============== END BACKUP OF REGISTRY KEYS USED FOR ===============

' -----------------------------------------------------------

' =============== START NEW OPEN * SHELL COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "*\shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath

' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue

' =============== START NEW OPEN DIRECTORY SHELL COMMAND ===============
' Name of Registry Entry Key\Path
strKeyPath = "Directory\shell\Edit With Notepad++\command"
objReg.CreateKey HKEY_CLASSES_ROOT,strKeyPath

' Name of Registry Entry String
strValueName = ""
strValue = "C:\progra~1\notepad++\notepad++.exe %1"
objReg.SetStringValue HKEY_CLASSES_ROOT,strKeyPath,NULL,strValue

' -----------------------------------------------------------

strKeyPath = "*\shellex\ContextMenuHandlers\ANotepad++"
objRegistry.DeleteKey HKEY_CLASSES_ROOT,strKeyPath

strKeyPath = "SOFTWARE\Classes\CLSID\{00F3C2EC-A6EE-11DE-A03A-EF8F55D89593}\Settings"
objRegistry.DeleteKey HKEY_LOCAL_MACHINE,strKeyPath

' Ending Message
MsgBox"Notepad++ Right-Click Settings" & VbCrLf & _
"Have Been Created", ,"Click OK To Close Window"

' Cleans up Variables From Memory
Set objFSO = Nothing
Set objWrite2File = Nothing
Set objShell = Nothing
Set objReg = Nothing
Set objRegistry = Nothing
Set objWshShell = Nothing
Set strDate = Nothing
Set strTime = Nothing
Set strTime2 = Nothing
Set strFileName = Nothing
Set strOpenFile = Nothing
Set strComputer = Nothing
Set strCommand = Nothing
Set strHostName = Nothing
Set strUserName = Nothing
Set intRC = Nothing
Set strKeyPath = Nothing
Set strValueName = Nothing
Set strValue = Nothing

End If


0

另一个解决方案是打开“开始菜单”,搜索“记事本”应用程序,然后右键单击它。然后单击“以管理员身份运行”。

现在,您可以浏览文件系统(通过“记事本/文件/打开...”)来查找要编辑的文件。


0

只是一种简单有效的方法:

  1. 在桌面上创建快捷方式(c:\ program files \ notepad ++ \ notpad ++。exe->右键单击-> sendto->桌面)
  2. 创建该快捷方式的副本,并将_ADMIN添加到快捷方式
  3. 右键单击_ADMIN快捷方式-属性-快捷方式-高级按钮-勾选“以管理员身份运行”
  4. 打开文件浏览器,然后键入“ shell:sendto”
  5. 将两个快捷方式拖放到打开的文件夹中

现在,任何文件的“ SendTo”列表中都具有notepad ++和notepad ++ _ ADMIN。

外壳上下文菜单

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.