මගේ වැඩසටහන ග්රාහක යන්ත්රයක ස්ථාපනය කළ පසු, වින්ඩෝස් 7 හි පරිපාලකවරයකු ලෙස ක්රියාත්මක වීමට මගේ වැඩසටහන බල කරන්නේ කෙසේද?
මගේ වැඩසටහන ග්රාහක යන්ත්රයක ස්ථාපනය කළ පසු, වින්ඩෝස් 7 හි පරිපාලකවරයකු ලෙස ක්රියාත්මක වීමට මගේ වැඩසටහන බල කරන්නේ කෙසේද?
Answers:
වැඩසටහනට කාවැදී ඇති මැනිෆෙස්ට් වෙනස් කිරීමට ඔබට අවශ්ය වනු ඇත. මෙය විෂුවල් ස්ටුඩියෝ 2008 සහ ඊට ඉහළින් ක්රියාත්මක වේ: ව්යාපෘතිය + නව අයිතමයක් එක් කරන්න, "යෙදුම් ප්රතිපත්ති ගොනුව" තෝරන්න. <requestedExecutionLevel>
මූලද්රව්යය පහත පරිදි වෙනස් කරන්න :
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
වැඩසටහන ආරම්භ කරන විට පරිශීලකයාට UAC විමසුම ලැබේ . Wis ානවන්තව භාවිතා කරන්න; ඔවුන්ගේ ඉවසීම ඉක්මනින් නැති වී යා හැකිය.
requestedExecutionLevel
ඔබේ මැනිෆෙස්ටයට අංගයක් එකතු කිරීම සටනෙන් අඩක් පමණි; යූඒසී අක්රිය කළ හැකි බව ඔබ මතක තබා ගත යුතුය. එය එසේ නම්, ඔබ පැරණි පාසල් මාර්ගය පරීක්ෂා කර පරිශීලකයා පරිපාලක නොවේ නම් දෝෂ සංවාදයක් කළ යුතුය
( IsInRole(WindowsBuiltInRole.Administrator)
ඔබේ නූල් අමතන්න CurrentPrincipal
).
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
කළ හැකිය
IsInRole
ඇන්ඩර්ස් ගැන කතා කරන MSDN උදාහරණයක් මෙන්න .
සවිස්තරාත්මක පියවර පහත පරිදි වේ.
මෙම කේතය භාවිතා කිරීමෙන් ඔබට ClickOnce හි ආරක්ෂක සැකසුම් අක්රිය කළ යුතු බව සලකන්න, මෙය සිදු කිරීම සඳහා, ගුණාංග -> ආරක්ෂාව -> ClickOnce Security
New Item...
මගේ ස්ථාපක සේවා ව්යාපෘතියේ විකල්පයක් නොවේ. යෙදුම් මැනිෆෙස්ට් එකතු කිරීම ගැන මා යන්නේ කෙසේද? මට එය මගේ ප්රධාන ව්යාපෘතියට එක් කළ හැකි නමුත් එය ස්ථාපකය නොවේ.
එය අතින් සිදු කිරීම සඳහා මම යම් කේතයක් ක්රියාත්මක කළෙමි:
using System.Security.Principal;
public bool IsUserAdministrator()
{
bool isAdmin;
try
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
isAdmin = principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch (UnauthorizedAccessException ex)
{
isAdmin = false;
}
catch (Exception ex)
{
isAdmin = false;
}
return isAdmin;
}
ඔබට EXE ගොනුවේ මැනිෆෙස්ට් ගොනුවක් කාවැද්දිය හැකි අතර එමඟින් වින්ඩෝස් (7 හෝ ඊට වැඩි) සෑම විටම පරිපාලක ලෙස වැඩසටහන ක්රියාත්මක කිරීමට හේතු වේ.
පියවර 6: ඔබට වැඩි විස්තර සොයාගත හැකිය : යෙදුම් ප්රකාශනයක් (යූඒසී) (එම්එස්ඩීඑන්) සාදන්න .
විෂුවල් ස්ටුඩියෝ 2008 හි වැඩ කරන අතරතුර, දකුණු ක්ලික් කර Project -> Add New Item
තෝරා ගන්න Application Manifest File
.
මැනිෆෙස්ට් ගොනුවේ, ඔබට ටැගය සොයාගත හැකි අතර requestedExecutionLevel
, ඔබට මට්ටම අගයන් තුනකට සැකසිය හැකිය:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
හෝ
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
හෝ
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
පරිපාලක ලෙස ක්රියාත්මක වීමට ඔබගේ යෙදුම සැකසීමට, ඔබ මැද එක තෝරා ගත යුතුය.
අනුව
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
ඔබට දැනටමත් එකක් නොමැති නම් හෝ එකක් එකතු කරන්නේ කෙසේදැයි නොදන්නේ නම් ඔබට යෙදුම් මැනිෆෙස්ට් එකක් එක් කිරීමට අවශ්ය වනු ඇත. සමහර ව්යාපෘති ස්වයංක්රීයව වෙනම මැනිෆෙස්ට් ගොනුවක් එක් නොකරන බැවින්, පළමුව ව්යාපෘති ගුණාංග වෙත ගොස්, යෙදුම් පටිත්ත වෙත ගොස් ඔබේ ව්යාපෘතිය ටැප් පතුලේ ඇති මැනිෆෙස්ට් එක බැහැර නොකිරීමට වග බලා ගන්න.
විෂුවල් ස්ටුඩියෝ 2010 හි ඔබේ ව්යාපෘතියේ නම දකුණු ක්ලික් කරන්න. "වින්ඩෝස් සැකසුම් බලන්න" ඔබන්න, මෙය "app.manifest" නමින් ගොනුවක් ජනනය කර විවෘත කරයි. මෙම ගොනුව තුළ "asInvoker" වෙනුවට "requiredAd Administrationrator" සමඟ ප්රතිස්ථාපනය කරන්න.
මෙය කළ හැකි තවත් ක්රමයක් නම්, කේතයෙන් පමණක්, ක්රියාවලිය එන්.එන්.ජී. හි පිළිතුර මෙන් පරිපාලක ලෙස ක්රියාත්මක වන්නේ දැයි සොයා ගැනීමයි.. ඉන්පසු යෙදුම නැවත විවෘත කර වත්මන් එක වසා දමන්න.
සේවාවක් ලෙස ස්ථාපනය කිරීමේදී වැනි යම් කොන්දේසි යටතේ ක්රියාත්මක වන විට යෙදුමකට පරිපාලක වරප්රසාද පමණක් අවශ්ය වූ විට මම මෙම කේතය භාවිතා කරමි. එබැවින් අනෙක් පිළිතුරු එයට බල කරන ආකාරයටම එය නිතරම පරිපාලක ලෙස ක්රියාත්මක වීමට අවශ්ය නොවේ.
පහත දැක්වෙන කේතයේ සටහන NeedsToRunAsAdmin
වර්තමාන තත්වයන් යටතේ පරිපාලක වරප්රසාද අවශ්ය දැයි හඳුනා ගන්නා ක්රමයකි. මෙය නැවත ලබා false
දෙන්නේ නම් කේතය ඉහළට ඔසවා තබන්නේ නැත. මෙය අනෙක් අයට වඩා මෙම ප්රවේශයේ ප්රධාන වාසියකි.
මෙම කේතයට ඉහත සඳහන් කළ වාසි තිබුණද, එය සැමවිටම ඔබට අවශ්ය නොවන නව ක්රියාවලියක් ලෙස නැවත දියත් කිරීම අවශ්ය වේ.
private static void Main(string[] args)
{
if (NeedsToRunAsAdmin() && !IsRunAsAdmin())
{
ProcessStartInfo proc = new ProcessStartInfo();
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().CodeBase;
foreach (string arg in args)
{
proc.Arguments += String.Format("\"{0}\" ", arg);
}
proc.Verb = "runas";
try
{
Process.Start(proc);
}
catch
{
Console.WriteLine("This application requires elevated credentials in order to operate correctly!");
}
}
else
{
//Normal program logic...
}
}
private static bool IsRunAsAdmin()
{
WindowsIdentity id = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(id);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
runas
පරිපාලක නොවන පරිශීලකයෙකුගෙන් පරිපාලක ලෙස , එසේ නොමැති නම් එය වත්මන් පරිශීලක අවසරයන් සමඟ නිහ ly ව විවෘත වනු ඇත (වින්ඩෝස් 7 64 බිට් මත පරීක්ෂා කර ඇත). යූඒසී ආබාධිත සහ පරිපාලක අයිතිය නොමැති විට ඔබට කළ හැකි එකම දෙය මට කිව හැකි තාක් දුරට නිසි මොහොතක ක්රියාත්මක කිරීම නතර කිරීමයි.
ClickOnce ආරක්ෂක සැකසුම් භාවිතයෙන් ඔබට මැනිෆෙස්ට් නිර්මාණය කළ හැකි අතර එය අක්රීය කරන්න:
Right click on the Project -> Properties -> Security -> Enable ClickOnce Security Settings
ඔබ එය ක්ලික් කළ පසු, ව්යාපෘතියේ ගුණාංග ෆෝල්ඩරය යටතේ app.manifest යටතේ ගොනුවක් සාදනු ඇත, මෙය නිර්මාණය වූ පසු, ඔබට එය සලකුණු කළ නොහැකEnable ClickOnce Security Settings
විකල්පය
එම ගොනුව විවෘත කර මෙම පේළිය වෙනස් කරන්න:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
වෙත:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
මෙමඟින් වැඩසටහනට පරිපාලක වරප්රසාද අවශ්ය වේ.
මෙය පරිපාලක ලෙස වැඩ කිරීමට ඉල්ලුම් කිරීමට බල නොකරයි.
මෙය answerNG විසින් ඉහත පිළිතුරේ සරල කළ අනුවාදයකි
public bool IsUserAdministrator()
{
try
{
WindowsIdentity user = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(user);
return principal.IsInRole(WindowsBuiltInRole.Administrator);
}
catch
{
return false;
}
}
ඔබේ ක්රියාත්මක කළ හැකි දේ මත දකුණු ක්ලික් කරන්න, ගුණාංග> අනුකූලතාව වෙත ගොස් 'මෙම වැඩසටහන පරිපාලක ලෙස ක්රියාත්මක කරන්න' කොටුව සලකුණු කරන්න.
ඔබට එය සියලු පරිශීලකයින් සඳහා පරිපාලක ලෙස ක්රියාත්මක කිරීමට අවශ්ය නම්, 'සියලු පරිශීලකයින් සඳහා සැකසුම් වෙනස් කිරීම' තුළ එකම දේ කරන්න.