WIN7 程序运行和管理员相关的各种问题解决方式

win7的管理员问题,实在是恶心,下面总结了WIN7下以管理员运行的方式:

A、   每次用户都右键菜单使用管理员权限运行程序,行情客户端就没有问题

原因:不用解释了吧!呵呵。

B、   客户端不要安装在系统盘Program Files下

原因:这样就可以避免只有管理员权限才可以写入文件的问题

C、   修改客户端,迁移程序数据

原因:这样就可以避免只有管理员权限才可以写入文件的问题

D、   修改客户端,编译成使用admin权限运行

原因:编译器链接有调用者选项  (asInvoker、highestAvailable、requireAdministrator),这里可以选择requireAdministrator

E、   修改注册表:

原因:在(HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers下新建一个键 键名为主程序全路径,值为RUNASADMIN

F、   默认从update启动Main.exe

原因:因为VISTA以后的WINDOWS会根据程序的文件名判断是不是需要管理员权限去运行,比如带有updae和install之类的名称的话,WINDOWS会自动认为需要管理员权限运行,这样通过update之类的文件启动主程序的话,主程序就会拥有管理员权限了。

G、主程序自己启动自己

原因:主程序可以先以普通权限运行,然后通过在启动自己,这时要求管理员权限运行,然后退出前面普通权限运行的程序。这个在开机自动启动是很好的解决方案。例如:

if ((!lpstrCmdLine || !lpstrCmdLine[0]) && UI::GetOSVertion().dwMajorVersion >= 6) {
  //VISTA WIN7 需要使用管理员权限
  TCHAR szPath[MAX_PATH] = {0};
  ::GetModuleFileName(NULL, szPath, MAX_PATH);
  TCHAR szWorkDirectory[MAX_PATH];
  StrCpy(szWorkDirectory, szPath);
  PathRemoveFileSpec(szWorkDirectory);

  SHELLEXECUTEINFO SEE = {0};
  SEE.cbSize = sizeof(SHELLEXECUTEINFO);
  SEE.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
  SEE.lpFile = szPath;
  SEE.lpVerb = TEXT("runas");
  SEE.lpDirectory = szWorkDirectory;
  SEE.lpParameters = TEXT("-uac");
  ShellExecuteEx(&SEE);
  bRunNormal = FALSE;
 } else if (!_tcsicmp(lpstrCmdLine, _T("-update"))) {//
  nRet = Update(lpstrCmdLine, nCmdShow);
  bRunNormal = FALSE;
 } else if (!_tcsicmp(lpstrCmdLine, _T("-uac"))) {//
  //vista and win7 ranas admin mode.
  //ran as admin normal bRunNormal = TRUE
 }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值