既要ClickOne,又要Administrator权限

本文介绍如何在使用ClickOne发布程序时,通过代码实现以管理员权限运行的应用程序,解决了不能使用管理员权限的问题。

众所周知,使用ClickOne发布程序简单方便,但有个限制就是不能使应用程序用Administrator权限运行。为了两者兼有,可以在启动处加上如下代码:

           var wi = WindowsIdentity.GetCurrent();
            var wp = new WindowsPrincipal(wi);
            bool runAsAdmin = wp.IsInRole(WindowsBuiltInRole.Administrator);
            if (!runAsAdmin)
            {
                var processInfo = new ProcessStartInfo(Assembly.GetExecutingAssembly().CodeBase);
                processInfo.UseShellExecute = true;
                processInfo.Verb = "runas";
                Process.Start(processInfo);  //以Administrator权限重新启动自己
            }
            else
            {
		//实际的启动代码


在 Smart Parking System (SPS) 的类图中,应该将 administrator 作为类加入。从系统功能需求来看,管理员需要执行一系列特定操作,如监控停车使用情况、更新停车位状态、处理异常情况以及生成统计报告等,这些操作与普通用户的操作有明显区别,需要独立的类来封装相关的属性和方法。 在之前的设计中,`AdminManagement` 类其实已经在一定程度上承担了管理员的部分功能,但从类的设计原则和概念清晰性来讲,将 `Administrator` 作为一个独立的类更合适。`Administrator` 类可以有自己的属性,如 `adminId`(管理员唯一标识符)、`adminName`(管理员姓名)、`adminPassword`(管理员密码)等;方法可以包括 `monitorParkingUsage()`(监控停车使用情况)、`updateParkingSpotStatus()`(更新停车位状态)、`handleExceptions()`(处理异常情况)、`generateStatisticalReports()`(生成统计报告)等。 以下是使用 PlantUML 表示加入 `Administrator` 类后的类图代码: ```plantuml @startuml class User { - userId: int - userName: string - contactInfo: string + makeReservation(): void + cancelReservation(): void + makePayment(): void } class ParkingSpot { - spotId: int - isAvailable: boolean - spotType: string + markAsOccupied(): void + markAsAvailable(): void } class Reservation { - reservationId: int - userId: int - spotId: int - startTime: datetime - endTime: datetime + extendReservation(): void + getReservationDetails(): string } class Payment { - paymentId: int - userId: int - reservationId: int - amount: float - paymentMethod: string + processPayment(): void + getPaymentStatus(): string } class Administrator { - adminId: int - adminName: string - adminPassword: string + monitorParkingUsage(): void + updateParkingSpotStatus(): void + handleExceptions(): void + generateStatisticalReports(): void } User "1" -- "*" Reservation : makes User "1" -- "*" Payment : makes ParkingSpot "1" -- "*" Reservation : has Reservation "1" -- "*" Payment : has Administrator "1" -- "*" User : manages Administrator "1" -- "*" ParkingSpot : manages Administrator "1" -- "*" Reservation : manages Administrator "1" -- "*" Payment : manages @enduml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值