我们需要在运行时将一些设置更改为HKEY_LOCAL_MACHINE.
是否可以在运行时根据需要提示uac提升,或者我是否必须启动第二个提升的流程来执行"脏工作"?
我最近更新了我的Visual Basic 6.0应用程序,现在包含一个exe.manifest文件以防止UAC虚拟化.应用此更新后,某些用户无法找到他们的数据文件(访问 MDB文件),并在系统搜索后最终找到它C:\Users\<username>AppData\Local\VirtualStore\Program Files(x86).
该文件夹区域是什么以及文件如何/何时移动到此区域?我们如何防止它?我希望现在我的应用程序使用了.manifest这种情况不会再发生了.在将应用程序放置在UAC虚拟化中之前,是否在使用清单之前将文件放在那里?
我有一些使用的方法,Microsoft.Web.Administration.ServerManager我一直有一些问题.使用以下死简单代码进行说明.
using(var mgr = new ServerManager())
{
foreach(var site in mgr.Sites)
{
Console.WriteLine(site.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我将该代码直接放在控制台应用程序中并运行它,它将获取并列出IIS快速网站.如果我从提升的命令提示符运行该应用程序,它将列出IIS7网站.有点不方便,但到目前为止还不错.
如果我将该代码放在由控制台应用程序引用和调用的类库中,它将始终列出IIS Express站点,即使控制台应用程序已升级.
谷歌让我尝试以下,没有运气.
//This returns IIS express
var mgr = new ServerManager();
//This returns IIS express
var mgr = ServerManager.OpenRemote(Environment.MachineName);
//This throws an exception
var mgr = new ServerManager(@"%windir%\system32\inetsrv\config\applicationhost.config");
Run Code Online (Sandbox Code Playgroud)
显然我误解了"升级"过程的运行方式.不应该在升级过程中执行的所有操作,甚至是来自另一个dll的代码,都应该以提升的权限运行吗?显然不是吗?
谢谢您的帮助!
正如指出的用C编写的配置文件:\程序文件(x86)\ MyApp的\ myapp.cfg,对管理员权限,这是不是写在配置文件中是一个好主意C:\Program Files (x86)\MyApp\myapp.cfg.
而不是这个,我的软件现在将其数据保存在子目录中%ALLUSERSPROFILE%(例如:C:\ProgramData\MyApp\myapp.cfg在Win7上)
[我myfile = open(filename, 'a')在Python中使用它来执行此操作.]
我现在遇到有关此文件的问题:
User A,然后运行它,然后C:\ProgramData\MyApp\myapp.cfg编写了文件.User B,并再次运行我的软件:现在显示错误:User 2无权写入C:\ProgramData\MyApp\myapp.cfg (Permission denied).为什么?不是%ALLUSERSPROFILE%所有用户都可以写的地方吗?如何解决这个问题呢 ?
我知道如何使用以下流程从进程启动具有管理员权限的进程:
proc.StartInfo.UseShellExecute = true;
proc.StartInfo.Verb = "runas";
Run Code Online (Sandbox Code Playgroud)
其中proc是System.Diagnostics.Process.但是,如何做相反的事情呢?
如果您所处的进程已经提升,那么如何在没有管理员权限的情况下启动新进程?更准确地说,我们需要使用与Windows资源管理器相同的权限级别启动新进程,因此如果禁用UAC则无需更改,但如果启用了UAC,但我们的进程正在升级,则需要执行某项操作因为我们正在创建一个虚拟驱动器,如果它是使用提升的权限创建的,并且Windows资源管理器运行速度不高,则不会显示.
随意将标题更改为更好的标题,我无法想出一个好的描述.
Win 7/UAC让我发疯.
在我的C++应用程序中,我需要运行一个需要在Windows 7上提升的可执行文件.我想解决这个问题并等待它继续完成.最简单的方法是什么?
我通常会通过这种方式执行此类操作CreateProcess(),但对于需要提升的可执行文件,它会失败.
我尝试使用cmd.exe /c ...直通CreateProcess,它可以工作,但弹出一个丑陋的cmd终端窗口.
我正在阅读,这ShellExecute()将允许提升,但使用时等待exe完成似乎并不容易ShellExecute().像system()工作一样简单吗?
非常感谢任何其他想法!
这是一个问题:
TortoiseSvn可以在不关闭用户帐户控制的情况下在Windows 2008上运行吗?
这是故事:我刚刚将我的测试服务器移到了Windows 2008,我遇到了TortoiseSvn的问题.我以管理员身份登录,但是当我从Subversion存储库更新一些代码时,我收到一条消息: 错误无法设置文件'C:\ dev\trunk.svn\entries'读写:访问被拒绝 所以我看过这样的消息,我知道要进行清理.但是当我运行清理时,我得到: 清理无法处理以下路径:C:\ dev\trunk
因此,进一步调查使我确信我有权限问题.从命令提示符运行svn状态向我显示目录已被锁定并且运行svn cleanup失败就像乌龟清理一样.但是当我以管理员身份启动命令提示符时,我可以运行svn cleanup并解决问题,我可以运行svn并更新我的文件.
更新:这是一个Windows UAC权限问题.关闭UAC可以解决问题.但我想找到一个不需要关闭UAC的解决方案.由于Tortoise是一个Windows shell扩展,我不知道如何让它以管理员身份运行.
有什么建议?
从未以管理员身份运行的应用程序,我有以下代码:
ProcessStartInfo proc = new ProcessStartInfo();
proc.WindowStyle = ProcessWindowStyle.Normal;
proc.FileName = myExePath;
proc.CreateNoWindow = false;
proc.UseShellExecute = false;
proc.Verb = "runas";
Run Code Online (Sandbox Code Playgroud)
当我调用Process.Start(proc)时,我没有弹出请求以管理员身份运行的权限,并且exe不以管理员身份运行.
我尝试将app.manifest添加到myExePath中找到的可执行文件,并将requestedExecutionLevel更新为
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)
使用更新的app.manifest,在Process.Start(proc)调用中,我得到一个异常,"请求的操作需要提升."
为什么.Verb操作没有设置管理员权限?
我正在测试Windows Server 2008 R2 Standard.
对于我的C#应用程序,我不想总是在应用程序启动时提示提升,但如果他们选择了受UAC保护的输出路径,那么我需要请求提升.
那么,如何检查路径是否受UAC保护,然后如何请求提升执行中?
我有一个控制台应用程序,需要使用一些需要管理员级别的代码.我已经读过我需要添加一个Manifest文件myprogram.exe.manifest,它看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator">
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Run Code Online (Sandbox Code Playgroud)
但它仍然没有提升UAC(在控制台或VS中的调试).我该如何解决这个问题?
如果我在Administrator中运行解决方案或在Administrator中运行/bin/*.exe,我能够使其工作.我仍然想知道是否有可能在应用程序启动时弹出而不是显式右键单击>以管理员身份运行?
uac ×10
c# ×5
.net ×2
elevation ×2
winapi ×2
.net-2.0 ×1
c++ ×1
delphi ×1
iis-7 ×1
iis-express ×1
manifest ×1
privileges ×1
process ×1
runas ×1
shellexecute ×1
tortoisesvn ×1
windows ×1