WEB开发网
开发学院操作系统Windows 7 Windows 7软件开发示例:UAC、系统版本、权限 阅读

Windows 7软件开发示例:UAC、系统版本、权限

 2009-11-16 00:00:00 来源:WEB开发网   
核心提示: 例如数据看似保存成功,在写入的地点却找不到,Windows 7软件开发示例:UAC、系统版本、权限(2),或者注销切换到另一个Windows用户时,无法找到保存的数据,又该如何呢?需要判断用户权限的权限,简单的解决方案是添加清单文件,引起这类问题的根源是Win7的UAC机制,它降低了Window

例如数据看似保存成功,在写入的地点却找不到,或者注销切换到另一个Windows用户时,无法找到保存的数据。引起这类问题的根源是Win7的UAC机制,它降低了Windows用户的默认权限,使得一些普通操作无法更改系统设置及系统保护的文件夹。

小提示:软件要结合系统某些功能时,需要调用相应的API。API调用得当否,对软件运行非常关键,我们从下期开始结合Win7酷炫功能,单独介绍如何正确的调用。Win7最新的API,有Win7特有的任务栏个性化快捷菜单(Jump List)、程序图标轮廓效果(Icon Overlay)、程序图标进度条效果(Progress Bar)、标签式缩略图(Tabbed Thumbnail)和缩略图工具栏(Thumbnail Toolbar)……

“婚礼”必要的元素

我们的软件要顺利嫁给Win7,在软件中要添加以下的元素。

1.代码检测操作系统版本号

在软件中添加判断操作系统是Win7 或2008 Server的代码:

C#

      if (Environment.OSVersion.Version > new Version(5, 1))
      {MessageBox.Show("Windows 7 or Windows 2008 Server","Operating System", 
                      MessageBoxButtons.OK,MessageBoxIcon.Error);
            return;
      }

2.尽量将数据存储在非系统盘

软件不要默认安装到系统盘,在编写软件安装路径时,要考虑这个。此外,还需要在软件中添加修改读写注册表的代码,使用HKEY_CURRENT_USER\Software下的键值作为存储数据的结点:

        static void Main(string[] args)
        {
            var registryKey = Registry.CurrentUser.CreateSubKey(
                @"Software\test");
            registryKey.SetValue("name", "zswang");
            registryKey = Registry.CurrentUser.OpenSubKey(@"Software\test");
            Console.WriteLine(string.Format("{0}={1}\r\n",
               "name", registryKey.GetValue("name")));
        }

3.提高程序的运行权限

如果用户使用了管理员身份进入系统,又希望把软件安装在系统盘,又该如何呢?需要判断用户权限的权限,简单的解决方案是添加清单文件。在可执行文件夹中找到与可执行文件相同名字且扩展名.manifest的文件,输入以下代码即可:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
  <assemblyIdentity version="1.0.0.0"
     processorArchitecture="X86"
     name="test"
     type="win32"/> 
  <description>Description of your application</description> 
  <!-- Identify the application security requirements. -->
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

上一页  1 2 

Tags:Windows 软件开发 UAC

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接